Используйте std.string.toString (символ *) (D1/Phobos) или std.conv.to (строка) (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).
'toString' устарел в D2. – kennytm
Вы не можете сделать 'string s = new string (c_str);' или мои знания на C++ резко исчезли? –
Вопрос сказал D, а не C++. –