如何在D语言中从字节数组构建字符串

5

我有一个字节数组,它由指针和大小定义:

  size_t size;   // size in bytes
  void   *data;  // NOT zero-terminated string

我该如何构建一个字符串,最好是零拷贝的方式?

1个回答

7
这里假设data指向不可修改的内存:
string s = (cast(immutable(char)*)data)[0..size];

如果不行,使用char[]比使用字符串更合适,或者你可以使用.idup创建一个不可变的副本。

相反的情况是:size = s.length; data = cast(void*)s.ptr; - Brazhnyk Yuriy
是的!如果“data”实际上是const(void)*(正如应该的那样,因为字符串内容是不可变的),那么强制转换将是不必要的。 - Vladimir Panteleev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接