Как преобразовать строку c в строку d?

Это так просто, я смущен, чтобы спросить, но как вы конвертируете строку c в строку d в D2?

У меня есть два варианта использования.

string convert( const(char)* c_str );
string convert( const(char)* c_str, size_t length );

Ответ 1

  • Используйте std.string.toString(char *) (D1/Phobos) или std.conv.to! (string) (D2):

    // D1
    import std.string; 
    ... 
    string s = toString(c_str);
    
    // D2
    import std.conv;
    ...
    string s = to!(string)(c_str);
    
  • Нарисуйте указатель:

    string s = c_str[0..len];
    

    (вы не можете использовать "длину", потому что он имеет особое значение с синтаксисом среза).

Оба возвращают срез по строке C (таким образом, ссылку, а не копию). Используйте свойство .dup для создания копии.

Обратите внимание, что строки D считаются кодировкой UTF-8. Если ваша строка находится в другой кодировке, вам нужно ее преобразовать (например, используя функции из std.windows.charset).