2015-02-17 5 views

ответ

4

Это предполагает, что data указывает на непреложный памяти:

string s = (cast(immutable(char)*)data)[0..size]; 

Если он нет, char[] бы более целесообразно вместо строки, или вы можете сделать неизменяемую копию с .idup.

+0

Противоположным будет: size = s.length; Данные = литой (недействительными *) s.ptr; ? –

+0

Да! Если 'data' на самом деле' const (void) * '(как и должно быть, поскольку содержимое строки является неизменным), тогда приведение будет ненужным. –