如何将c字符串转换为d字符串?

问题描述:

这太简单了,我很尴尬的问,但是如何将c字符串转换为D2中的d字符串?如何将c字符串转换为d字符串?

我有两个用例。

string convert(const(char)* c_str); 
string convert(const(char)* c_str, size_t length); 

  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