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

2023-12-19

这太简单了,我不好意思问,但是如何在 D2 中将 c 字符串转换为 d 字符串?

我有两个用例。

string convert( const(char)* c_str );
string convert( const(char)* c_str, size_t length );

  1. 使用 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);
    
  2. 切片指针:

    string s = c_str[0..len];
    

    (不能使用“length”,因为它对于切片语法有特殊含义)。

两者都会返回 C 字符串的切片(因此,是引用而不是副本)。使用 .dup 属性创建副本。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将c字符串转换为d字符串? 的相关文章

  • 如何在 D2 (Phobos) 中获得单次击键?

    是否有一种简单的跨平台方法可以使用 Phobos 在 D2 中进行单次击键 例如 按任意键继续 提示 或者 Brainfuck 解释器 我尝试过的所有方法都需要在传递输入之前按 Enter 键 例如 getchar 在 Windows 上使
  • D lang - 在同一程序中使用 read 和 readln()

    我的 D 程序遇到了一个非常奇怪的问题 read s variable 本身工作得很好 而 readln variable 本身工作得很好 但是当我将两者放在一起时 readln 似乎被忽略了 使用 gdc 和 dmd 均发生错误 impo
  • D2 语言准备好用于生产了吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • D语言:初始化动态多维数组最佳实践?

    只是好奇这是否是初始化动态多维数组的最佳实践D http www d programming language org index html 他们的语言参考中有一个关于数组的部分 但我不太确定它是否超出了我想要完成的目标 class Map
  • 在 OS X 上初始化 D 运行时

    编辑 这似乎是一个长期存在的问题 没有迫在眉睫的解决方案 http d puremagic com issues show bug cgi id 8133 http d puremagic com issues show bug cgi i
  • 延迟读取 D 中的文件

    我正在用 D 编写一个目录树扫描函数 它尝试将 grep 和 file 等工具结合起来 并且仅当文件中的内容满足条件时才对文件中的内容进行条件 grepnot匹配一组指示文件类型的魔术字节 例如 ELF 图像等 在最小化文件 io 方面 使
  • SDL 窗口似乎被操作系统错误地标记为“无响应”

    我有一个通过 Derelict 3 访问的 SDL2 窗口 它应该是黑白频闪 不是因为我讨厌癫痫病患者 而且它成功地做到了这一点 然而 在一段时间后 Ubuntu 13 10 将窗口标记为 无响应 将其变灰 并使频闪效果变暗 这非常令人恼火
  • 泛型类型的签名约束

    struct S int a int b void fun T T t I want fun跟 共事S仅有的 签名约束是什么样的 我做不到fun的成员S 与void fun T T t if is T S I get Error struc
  • 通过 mixin 列出类的方法

    我想在 mixin 中列出一个类的方法 为此 我假设我必须打开 mixin 中包含源代码的文件 但找到该文件的名称比我想象的要难 我尝试使用 FILE 但它给出了 mixin 声明的文件 所以我必须在每个文件中定义 mixin 这没有任何意
  • 从 D 中的字符串获取普通 char*?

    我正在尝试弄清楚如何从 D 字符串 不可变 char 获取普通的可变 C 字符串 char 以便将字符数据传递给遗留的 C 代码 toStringz 不起作用 因为我收到一条错误 说我 无法将 immutable char 类型的表达式 t
  • D的语法真的是上下文无关的吗?

    几个月前我在 D 新闻组上发布了这个问题 但由于某种原因 答案从未真正说服我 所以我想我应该在这里问 D 的语法显然是上下文无关的 http www digitalmars com d 2 0 template comparison htm
  • 在 D 中制作结构体的堆副本

    如何创建堆栈上结构的垃圾收集副本 来自 C 背景 我的第一个猜测是像下面这样的复制构造函数 但它对于 D 来说似乎不太惯用 而且我在我看过的任何 D 项目中都没有看到过这样的复制构造函数 struct Foo immutable int b
  • D 中的枚举与不可变

    有什么区别 enum i 2 enum s Hello and immutable i 2 immutable s Hello 在 D 2 0 中 An enum是用户定义的类型 而不是变量 enum e 2 是一个 像这样的东西的简写en
  • 使用 Dlang 计算目录中的文件数

    我想要一种简单的方法来使用 D 来计算目录中的文件数量 据我从 D 手册中可以看出 dirEntries 返回一个范围 但它没有长度属性 因此 我必须用计数器迭代结果 或者收集传统数组中的名称 我可以找到它的长度 有更好的方法吗 auto
  • 无法从 D 中的 std.range 中切片 Take!R?

    我正在尝试使用切片运算符从 std range 获取 take 函数的返回值的切片 我的代码 auto tempChunk a b c d auto a tempChunk take 3 writeln a 0 2 由于本例中的 Take
  • D 中的特征可以用于类型类吗?

    我是 D 新手 我正在寻找一种使用类似 Haskell 的类型类进行编程的好方法 例如D 中的函子 幺半群等 Tango 或 Phobos 中是否实现了类似的功能 我听说过可以对某些属性进行编译时类型检查的特征 它们可以用于类型类吗 我尝试
  • 在 GTK+ (gtkD) 中处理按键

    我正在玩gtkD http www dsource org projects gtkd GTK 的 D 绑定 我有一个window对象 实例gtk MainWindow 我想处理它的按键 How 如何处理特殊键 例如箭头键 pgup pgd
  • D 并发写入缓冲区

    假设您有一个大小为 N 的缓冲区 必须将其设置为确定的值 例如零或其他值 缓冲区中的此值设置分为 M 个线程 每个线程处理缓冲区的 N M 个元素 缓冲区不能immutable 因为我们改变了值 消息传递也不起作用 因为禁止传递 ref 或
  • 现实世界中的 D 编程语言? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有人在现实世界中使用 D 吗 如果是这样 你用它做什么 我似乎在网上找不到任何用 D 编写的大东西 尽管缺乏已知的大用户 但 D 对我
  • 声明常量 string[char] AA 的语法是什么?

    以下声明 const string char AA1 a fkclopel b poehfftw void main string args 给我 C temp 0186F968 d 1 27 错误 非常量表达式 a fkclopel b

随机推荐