如何在D中将char *转换为字符串?

时间:2012-01-10 23:01:22

标签: string pointers casting char d

我有一个标准的char指针,我试图强制转换为字符串。

// string to char*
char *x = cast(char*)("Hello World\0");

// char* to string?
string x = cast(string)x;
string x = cast(immutable(char)[])x;

错误!

如何将char *转换为D?

中的字符串

2 个答案:

答案 0 :(得分:14)

使用std.conv.tochar*转换为string。使用std.string.toStringZ走另一条路。

import std.string;
import std.stdio;
import std.conv;

void main()
{
    immutable(char)* x = "Hello World".toStringz();
    auto s = to!string(x);
    writeln(s);
}

答案 1 :(得分:3)

如果你知道确切的长度,你可以这样做:

immutable(char)* cptr = obj.SomeSource();
int len = obj.SomeLength();

string str = cptr[0..len];

对于某些情况(如果字符串包含\0),则需要。