2010-03-24 193 views

回答

16
  1. 使用std.string.toString(字符*)(D1 /火衛)或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]; 
    

    (你不能使用「length」,因爲它與slice語法有特殊的含義)。

兩者都將在C字符串(因此,引用而不是副本)上返回一片。使用.dup屬性創建副本。

請注意,D字符串被認爲是UTF-8編碼。如果您的字符串是另一種編碼,則需要將其轉換(例如,使用std.windows.charset中的函數)。

+0

'toString'在D2中已棄用。 – kennytm 2010-03-24 14:04:48

+0

難道你不能'字符串s =新字符串(c_str);'或者我的C++知識褪色了嗎? – 2010-03-24 14:20:28

+0

問題說D,而不是C++。 – 2010-03-24 14:43:52

相關問題