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

如何将c字符串转换为d字符串?,d,D,这很简单,我很不好意思问,但如何将D2中的c字符串转换为d字符串 我有两个用例 string convert( const(char)* c_str ); string convert( const(char)* c_str, size_t length ); 使用std.string.toString(char*)(D1/Phobos)或std.conv.to!(字符串)(D2): 切片指针: string s = c_str[0..len]; (不能使用“length”,因为它在sli

这很简单,我很不好意思问,但如何将D2中的c字符串转换为d字符串

我有两个用例

string convert( const(char)* c_str );
string convert( const(char)* c_str, size_t length );
  • 使用std.string.toString(char*)(D1/Phobos)或std.conv.to!(字符串)(D2):

  • 切片指针:

    string s = c_str[0..len];
    
    (不能使用“length”,因为它在slice语法中有特殊含义)

  • 两者都将在C字符串上返回一个切片(因此,是引用而不是副本)。使用.dup属性创建副本


    注意,D字符串被认为是UTF-8编码。如果您的字符串采用另一种编码,则需要对其进行转换(例如,使用std.windows.charset中的函数)。

    toString
    在D2中不推荐使用。@Caspin:Use
    to!String 或“代码>文本<代码> >从代码> STD.CONV模块。IIR字符串是不可变的,因此对于情况2,您需要抛出一个CAST(如果您知道C字符串是不可变的或是<代码>。IDUP < /COD>其他情况。”精英:YUP,它确实如此,如果您喜欢C++,您应该看看D.。(警告一下,目前的生态系统有点不成熟).DyCyStudio,D1没有提供足够的C++优势来获取我的兴趣。特别是D2的模板语法是引起我兴趣的,基于范围的容器而不是基于迭代器的…
    
    string s = c_str[0..len];