2010-03-24 5 views

ответ

16
  1. Используйте 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); 
    
  2. Кусочек указатель :

    string s = c_str[0..len]; 
    

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

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

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

+0

'toString' устарел в D2. – kennytm

+0

Вы не можете сделать 'string s = new string (c_str);' или мои знания на C++ резко исчезли? –

+0

Вопрос сказал D, а не C++. –