Ответ 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).