2010-03-24 18 views

risposta

16
  1. 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); 
    
  2. 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).

+0

'toString' è deprecato in D2. – kennytm

+0

non puoi fare 'string s = nuova stringa (c_str);' o la mia conoscenza del C++ si sbiadisce drasticamente? –

+0

Domanda detta D, non C++. –

Problemi correlati