Это настолько просто, я смущен для выяснения, но как Вы преобразовываете струну до в струну ре в D2?
У меня есть два варианта использования.
string convert( const(char)* c_str );
string convert( const(char)* c_str, size_t length );
Используйте std.string.toString (char *) (D1 / Phobos) или std.conv.to! (Строка) (D2):
// D1
import std.string;
...
строка s = toString (c_str);
// D2
импорт std.conv;
. ..
строка s = to! (Строка) (c_str);
Разрезать указатель:
строка s = c_str [0..len];
(вы не можете использовать «длину», потому что она имеет особое значение в синтаксисе среза).
Оба возвращают фрагмент строки C (таким образом, ссылку, а не копию). Используйте свойство .dup для создания копии.
Обратите внимание, что строки D считаются имеющими кодировку UTF-8. Если ваша строка находится в другой кодировке, вам необходимо преобразовать ее (например, используя функции из std.windows.charset).