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

发布于 2024-12-26 14:58:27 字数 253 浏览 0 评论 0原文

我有一个标准的 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 中的字符串吗?

I have a standard char pointer which im trying to cast to a string.

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

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

Error!

Any ideas how to cast a char* to a string in D?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

莫言歌 2025-01-02 14:58:27

使用 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);
}

Use std.conv.to to convert from char* to string. Use std.string.toStringZ to go the other way.

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

void main()
{
    immutable(char)* x = "Hello World".toStringz();
    auto s = to!string(x);
    writeln(s);
}
望笑 2025-01-02 14:58:27

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

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

string str = cptr[0..len];

对于某些需要的情况(例如字符串包含 \0)。

If you know the exact length you can do this:

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

string str = cptr[0..len];

For some cases (like if the string contains \0) that is needed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文