【发布时间】:2010-03-24 13:51:46
【问题描述】:
这么简单我都不好意思问了,但是在D2中怎么把c字符串转成d字符串呢?
我有两个用例。
string convert( const(char)* c_str );
string convert( const(char)* c_str, size_t length );
【问题讨论】:
标签: d
这么简单我都不好意思问了,但是在D2中怎么把c字符串转成d字符串呢?
我有两个用例。
string convert( const(char)* c_str );
string convert( const(char)* c_str, size_t length );
【问题讨论】:
标签: d
使用 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];
(不能使用“length”,因为它在切片语法中具有特殊含义)。
两者都将返回 C 字符串上的切片(因此,是引用而不是副本)。使用 .dup 属性创建副本。
请注意,D 字符串被认为是 UTF-8 编码。如果您的字符串采用另一种编码,则需要对其进行转换(例如,使用 std.windows.charset 中的函数)。
【讨论】:
toString 在 D2 中已弃用。
std.conv 模块中的to!string 或text。
.idup。