Uso std.string.toString (char *) (D1/Fobos) o std.conv.to (cadena) (D2):
// D1
import std.string;
...
string s = toString(c_str);
// D2
import std.conv;
...
string s = to!(string)(c_str);
Slice el puntero :
string s = c_str[0..len];
(no puede usar "longitud" porque tiene un significado especial con la sintaxis de división).
Ambos devolverán una porción sobre la cadena C (por lo tanto, una referencia y no una copia). Use la propiedad .dup para crear una copia.
Tenga en cuenta que las cadenas D se consideran codificadas en UTF-8. Si su cadena está en otra codificación, deberá convertirla (por ejemplo, utilizando las funciones de std.windows.charset).
'toString' está en desuso en D2. – kennytm
¿no puedes hacer 'string s = new string (c_str);' o mi conocimiento de C++ se desvaneció drásticamente? –
Pregunta dijo D, no C++. –