converte un carattere * in std :: string


262

Devo usare un std::stringper memorizzare i dati recuperati da fgets(). Per fare questo ho bisogno di convertire il char*valore restituito da fgets()in std::stringa store in un array. Come si può fare?

Risposte:


376

std::string ha un costruttore per questo:

const char *s = "Hello, World!";
std::string str(s);

Si noti che questo costrutto copia in profondità l'elenco dei caratteri in se snon dovrebbe esserlo nullptr, altrimenti il ​​comportamento non è definito.


6
cosa succederà se lo è?
Carson Myers,

14
Lo standard afferma che il parametro del costruttore "non deve essere un puntatore nullo" - non specifica che vengano generate eccezioni.

24
È una copia superficiale o profonda?

4
@pushkin No strè solo un nome variabile. Potrebbe essere qualsiasi cosa: S, abc, l, I, strHelloWorld. Ovviamente alcune scelte sono migliori di altre. Ma per questo esempio strè abbastanza accettabile.
Disilluso il

10
@Madhatter è una copia profonda. L'allocazione del puntatore rimarrà e la stringa si renderà una nuova allocazione.
moodboom
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.