Qualcuno può dirmi come convertire una stringa di stile C (ad esempio un char *) in una stringa di stile C++ (cioè std :: string) in un programma C++?conversione di stringa di stile c in stringa di stile C++
Grazie mille.
Qualcuno può dirmi come convertire una stringa di stile C (ad esempio un char *) in una stringa di stile C++ (cioè std :: string) in un programma C++?conversione di stringa di stile c in stringa di stile C++
Grazie mille.
std::string
può assumere un char *
come parametro constructor e tramite un numero di operatori.
char * mystr = "asdf";
std::string mycppstr(mystr);
o per gli avvocati lingua
const char * mystr = "asdf";
std::string mycppstr(mystr);
char* cstr = //... some allocated C string
std::string str(cstr);
Il contenuto di cstr
verranno copiati str
.
questo può essere utilizzato in operazioni anche come:
std::string concat = somestr + std::string(cstr);
Dove somestr
è già `std :: string``
si può fare uso del string
class constructor che prende un char*
come argomento.
char *str = "some c style string";
string obj(str);
Grazie mille ... – assassin
Un altro modo per eseguire la conversione è quello di chiamare una funzione che prende un const std::string&
come parametro:
void foo(const std::string& str);
void bar()
{
char* str= ...
foo(str);
}
penso che la sua molto più ordinato di fare la conversione al limite di funzione di chiamata.
stai dicendo che foo dovrebbe essere una funzione vuota qui e dopo aver chiamato quella funzione str viene convertita in const std :: string type? – assassin
@assassin: No, mi dispiace. 'foo()' è una funzione che accetta 'const std :: string &'. Potrebbe essere uno che scrivi. La mia risposta era solo un modello di utilizzo in cui si ha una stringa c e si desidera convertirla. Separa anche le parti del codice in cui viene generata una c-string da cui i dati vengono utilizzati sotto forma di 'std :: string'. – quamrana
Mi chiedo perché tutti coloro che rispondono a questo usano il tipo di carattere difettoso (ma consentito dallo standard) per stringhe letterali. Tutti i valori letterali di stringa sono di sola lettura e, pertanto, deve essere utilizzato il tipo char const *. L'argomento preso da std :: string è anche char const *. – Tronic
quindi se ho una stringa di tipo C in una variabile char *, come posso convertirla in una stringa di stile C++ dato che in senso stretto il parametro per il costruttore dovrebbe essere char const * type? – assassin
@assassin: non hai char * affatto, ma la tua stringa di tipo C è una char const *. Se è il tuo codice, puoi cambiarlo, se è in una biblioteca, non puoi. –