как преобразовать строку c в строку d? - PullRequest
11 голосов
/ 24 марта 2010

Это так просто, я стесняюсь спросить, но как конвертировать строку c в строку d в D2?

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

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

1 Ответ

16 голосов
/ 24 марта 2010
  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);
    
  2. Нарезать указатель:

    string s = c_str[0..len];
    

    (нельзя использовать «длину», потому что она имеет особое значение с синтаксисом среза).

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

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

...