这很简单,我很尴尬地问,但是如何在D2中将c字符串转换为d字符串?
我有两个用例。
string convert( const(char)* c_str );
string convert( const(char)* c_str, size_t length );
这很简单,我很尴尬地问,但是如何在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!(string)(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中的函数)。
使用std.string.toString(char *)(D1 / Phobos)或std.conv.to!(string)(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中的函数)。