У меня есть массив байтов, который определяется как указатель + размер:
size_t size; // size in bytes
void *data; // NOT zero-terminated string
Как мне создать из него «строку», желательно с нулевой копией?
У меня есть массив байтов, который определяется как указатель + размер:
size_t size; // size in bytes
void *data; // NOT zero-terminated string
Как мне создать из него «строку», желательно с нулевой копией?
Это предполагает, что data
указывает на неизменяемую память:
string s = (cast(immutable(char)*)data)[0..size];
Если это не так, вместо строки будет более подходящим char[]
, или вы можете сделать неизменяемую копию с помощью .idup
.
data
на самом деле const(void)*
(как и должно быть, поскольку содержимое строки неизменяемо), то приведение будет ненужным.
- person Vladimir Panteleev; 17.02.2015