Usa std.string.toString (char *) (D1/Phobos) o std.conv.to (stringa) (D2):!
// D1
import std.string;
...
string s = toString(c_str);
// D2
import std.conv;
...
string s = to!(string)(c_str);
Slice il puntatore :
string s = c_str[0..len];
(non è possibile utilizzare "lunghezza" perché ha un significato speciale con la sintassi slice).
Entrambi restituiranno una porzione sulla stringa C (quindi, un riferimento e non una copia). Usa la proprietà .dup per creare una copia.
Si noti che le stringhe D sono considerate nella codifica UTF-8. Se la tua stringa è in un'altra codifica, dovrai convertirla (ad esempio usando le funzioni di std.windows.charset).
fonte
2010-03-24 14:00:22
'toString' è deprecato in D2. – kennytm
non puoi fare 'string s = nuova stringa (c_str);' o la mia conoscenza del C++ si sbiadisce drasticamente? –
Domanda detta D, non C++. –