c string conversion functions
Questo tutorial tratta le funzioni di conversione delle stringhe C ++ che possono essere utilizzate per convertire la stringa in int & double e int in una stringa ecc .:
È comune convertire una stringa in numeri come integer e double quando si sviluppano applicazioni C ++.
In questo argomento vengono descritte le funzioni che possono essere utilizzate per convertire efficacemente le stringhe in valori int e double e numerici in una stringa.
=> Leggi qui la popolare serie di formazione C ++.
Cosa imparerai:
Funzioni di conversione di stringhe C ++
Quando programmiamo applicazioni utilizzando C ++, diventa necessario convertire i dati da un tipo a un altro. La conversione dei dati dovrebbe essere tale che nessun dato venga perso quando convertiamo i dati esistenti in un nuovo tipo. Ciò è particolarmente vero quando convertiamo i dati di una stringa in numeri e viceversa.
In questo tutorial, discuteremo le varie funzioni per convertire l'oggetto std :: string in tipi di dati numerici inclusi integer e double.
Converti stringhe in tipi numerici in C ++
In generale, esistono due metodi comuni per convertire una stringa in numeri in C ++.
- Utilizzo di funzioni stoi e atoi che si replicano per tutti i tipi di dati numerici.
- Utilizzo della classe stringstream.
Cerchiamo di discutere ogni metodo in dettaglio.
Utilizzo delle funzioni stoi e atoi
La classe std :: string supporta varie funzioni per convertire una stringa in intero, long, double, float, ecc. Le funzioni di conversione supportate da std :: string sono tabularizzate come segue:
Funzione | Descrizione |
---|---|
in piedi rubato stoll | Converte una stringa in un numero intero (inclusi i tipi long e long long). |
atoi atollo atollo | Converte la stringa di byte in un numero intero (inclusi i tipi long e long long). |
si fermò polvere stold | Converte la stringa di byte in valori a virgola mobile (inclusi i tipi float, double e long double). |
stoul stoull | Converte la stringa di byte in un numero intero senza segno (inclusi i tipi lungo senza segno e lungo lungo senza segno). |
Nota: Ad eccezione delle funzioni per convertire la stringa di byte (atoi), tutte le altre funzioni di conversione sono presenti da C ++ 11 in poi. Ora discuteremo le funzioni di conversione per convertire la stringa in int e la stringa in double.
String to int Usando stoi () e atoi ()
da youtube a mp3 più lunghi di 90 min
in piedi()
Prototipo di funzione: stoi (const std :: string & str, std :: size_t * pos = 0, int base = 10);
Parametro (i):
str => Stringa da convertire
pos => Indirizzo di un numero intero per memorizzare il numero di caratteri elaborati; predefinito = 0
base => La base numerica; predefinito = 0
Valore di ritorno: Intero equivalente alla stringa specificata.
Eccezioni: std :: invalid_argument => Se non è possibile eseguire la conversione.
Std :: out_of_range => Se il valore convertito è fuori dall'intervallo dell'intervallo del tipo di risultato.
Descrizione: La funzione stoi () accetta una stringa come argomento e restituisce un valore intero. Genererà un'eccezione se il valore convertito è fuori intervallo o se la conversione non può essere eseguita.
Facciamo un esempio di programmazione per comprendere meglio questa funzione.
#include #include using namespace std; int main() { string mystr1 = '53'; string mystr2 = '3.142'; string mystr3 = '31477 with char'; int strint1 = stoi(mystr1); int strint2 = stoi(mystr2); int strint3 = stoi(mystr3); cout << 'stoi('' << mystr1 << '') is ' << strint1 << '
'; cout << 'stoi('' << mystr2 << '') is ' << strint2 << '
'; cout << 'stoi('' << mystr3 << '') is ' << strint3 << '
'; }
Produzione:
stand ('53') è 53
stand ('3.142') è 3
stoi ('31477 con char') è 31477
Nel programma sopra, abbiamo usato la funzione stoi con tre diverse stringhe. Si noti che durante la conversione dei dati della stringa in un valore intero, la funzione elimina gli spazi bianchi o qualsiasi altro carattere.
Quindi, nel caso di mystr2 (3.142), la funzione ha scartato tutto dopo il punto decimale. Allo stesso modo, nel caso di mystr3 ('31477 with char'), è stato preso in considerazione solo il numero. Gli altri contenuti della stringa sono stati eliminati.
atoi ()
Prototipo di funzione: int atoi (const char * str);
Parametro (i): str => Puntatore a una stringa di byte con terminazione null.
Valore di ritorno:
Success => Valore intero corrispondente all'argomento str.
Fallimento => Non definito se il valore convertito è fuori intervallo.
0 => Se non è possibile eseguire la conversione.
Descrizione: Questa funzione converte una stringa di byte in un valore intero. La funzione atoi () scarta tutti gli spazi fino a quando non viene incontrato un carattere diverso da uno spazio vuoto, quindi prende i caratteri uno per uno per formare una rappresentazione di numero intero valida e la converte in un numero intero.
Esempio di funzione atoi
#include #include using namespace std; int main() { const char *mystr1 = '24'; const char *mystr2 = '3.142'; const char *mystr3 = '23446 with char'; const char *mystr4 = 'words with 3'; int mynum1 = atoi(mystr1); int mynum2 = atoi(mystr2); int mynum3 = atoi(mystr3); int mynum4 = atoi(mystr4); cout << 'atoi('' << mystr1 << '') is ' << mynum1 << '
'; cout << 'atoi('' << mystr2 << '') is ' << mynum2 << '
'; cout << 'atoi('' << mystr3 << '') is ' << mynum3 << '
'; cout << 'atoi('' << mystr4 << '') is ' << mynum4 << '
'; }
Produzione:
implementando una coda di priorità in java
atoi ('24') è 24
atoi ('3.142') è 3
atoi ('23446 con char') è 23446
atoi ('parole con 3') è 0
Come mostrato nel programma sopra, la funzione atoi accetta una stringa di byte come argomento e la converte in un valore intero. Gli spazi bianchi o qualsiasi altro carattere vengono scartati. Se il valore convertito è fuori intervallo, viene restituito 0.
Stringa da raddoppiare usando stod ()
Prototipo di funzione: stod (const std :: string & str, std :: size_t * pos = 0);
Parametro (i):
str => Stringa da convertire
pos => Indirizzo di un intero per memorizzare il numero di caratteri elaborati; predefinito = 0
Valore di ritorno: Doppio valore equivalente alla stringa specificata.
Eccezioni:
std :: invalid_argument => Se non è possibile eseguire la conversione.
std :: out_of_range => Se il valore convertito è fuori dall'intervallo dell'intervallo del tipo di risultato.
Descrizione: Questa funzione converte una stringa in un valore a virgola mobile. La funzione stod () scarta tutti gli spazi fino a quando non viene incontrato un carattere diverso da uno spazio vuoto, quindi prende i caratteri uno per uno per formare una rappresentazione numerica a virgola mobile valida e la converte in virgola mobile.
Vediamo un esempio che dimostra questa funzione.
#include #include using namespace std; int main() { const char *mystr1 = '24'; const char *mystr2 = '3.142'; const char *mystr3 = '23446 with char'; double mynum1 = stod(mystr1); double mynum2 = stod(mystr2); double mynum3 = stod(mystr3); cout << 'stod('' << mystr1 << '') is ' << mynum1 << '
'; cout << 'stod('' << mystr2 << '') is ' << mynum2 << '
'; cout << 'stod('' << mystr3 << '') is ' << mynum3 << '
'; }
Produzione:
stod ('24') è 24
stod ('3.142') è 3.142
stod ('23446 con char') è 23446
Il programma di cui sopra dimostra l'utilizzo della funzione 'stod'. L'output indica i valori double convertiti delle stringhe specificate.
Utilizzo della classe stringstream
L'utilizzo della classe stringstream è il modo più semplice per convertire i valori di stringa in valori numerici.
Impareremo la classe stringstream in dettaglio nei nostri tutorial successivi. Di seguito è riportato un programma C ++ che dimostra la conversione di una stringa in valori numerici.
#include #include using namespace std; int main() { string str = '2508'; stringstream sstream(str); int num = 0; sstream >> num; double dNum=0.0; string doublestr = '3.142'; stringstream dstream(doublestr); dstream >>dNum; cout << 'Value of num : ' << num< Produzione:
Valore di num: 2508
Valore di dNum: 3.142
Nel programma sopra, vediamo che abbiamo dichiarato un oggetto stringa. Quindi dichiariamo un oggetto stringstream e passiamo la stringa a questo oggetto in modo che la stringa venga convertita in un oggetto stringstream. Quindi questo oggetto stringstream viene passato a un valore intero utilizzando l'operatore '>>' che converte l'oggetto stringstream in un numero intero.
Allo stesso modo, abbiamo anche convertito la stringa in double. Quindi, fintanto che l'operatore '>>' supporta il tipo di dati, possiamo convertire una stringa in qualsiasi tipo di dati utilizzando un oggetto stringstream.
Converti int in stringa in C ++
Possiamo anche convertire valori numerici in valori stringa. Esistono due metodi per convertire i valori numerici in valori stringa e discuteremo quelli di seguito.
Utilizzo della funzione to_string ()
Prototipo di funzione: std :: string to_string (tipo valore);
Parametro (i): valore => Valore numerico da convertire
Valore di ritorno: Valore stringa contenente il valore convertito.
Eccezione: può lanciare std :: bad_alloc
Descrizione: Questa funzione to_string () converte il valore numerico passato come argomento in tipo stringa e restituisce la stringa.
Vediamo un esempio di questa funzione utilizzando un programma C ++.
#include #include // used for string and to_string() using namespace std; int main() { int int_val = 20; float flt_val = 30.50; string str_int = to_string(int_val); string str_float = to_string(flt_val); cout << 'The string representation of integer : '; cout << str_int << endl; cout << 'The string representation of float : '; cout << str_float << endl; return 0; }
Produzione:
La rappresentazione di stringa di integer: 20 La rappresentazione di stringa di float: 30.500000
il test del software riprende i campioni 2 anni di esperienza
Qui abbiamo due variabili, ciascuna di tipo integer e float. Quindi chiamiamo il metodo to_string due volte con argomenti interi e float e convertiamo entrambi i valori in valori stringa. Infine, visualizziamo i valori convertiti.
Si noti che la conversione del valore a virgola mobile nella stringa può dare risultati imprevisti poiché il numero di cifre significative potrebbe essere zero con il metodo to_string.
Utilizzo della classe stringstream
Usando la classe stringstream, lo stringstream dichiara prima un oggetto stream che inserisce un valore numerico come flusso nell'oggetto. Quindi utilizza la funzione 'str ()' per convertire internamente un valore numerico in stringa.
Esempio:
#include #include #include using namespace std; int main() { int num = 26082019; double num_d = 3.142; ostringstream mystr; ostringstream my_dstr; mystr << num; string resultstr = mystr.str(); my_dstr << num_d; string d_str = my_dstr.str(); cout << 'The string formed from integer is : '; cout << resultstr << endl; cout << 'The string formed from double is : '; cout << d_str << endl; return 0; } #include #include #include using namespace std; int main() { int num = 26082019; double num_d = 3.142; ostringstream mystr; ostringstream my_dstr; mystr << num; string resultstr = mystr.str(); my_dstr << num_d; string d_str = my_dstr.str(); cout << 'The string formed from integer is : '; cout << resultstr << endl; cout << 'The string formed from double is : '; cout << d_str << endl; return 0; }
Produzione:
La stringa formata da un numero intero è: 26082019
La stringa formata da double è: 3.142
In questo elenco, abbiamo definito un numero intero e un valore doppio. Quindi abbiamo l'oggetto ostringstream usando il quale convertiamo il valore numerico nell'oggetto stringstream. Questo sta usando il '<<’ operator. Next, we use the str() method on a stringstream object to convert it to a string.
Conclusione
In questo tutorial, abbiamo discusso le funzioni di conversione che convertono una stringa in tipi numerici e i tipi numerici in una stringa. Abbiamo visto le funzioni e gli esempi delle funzioni stoi (), stod (), atoi (), to_string () in dettaglio. Abbiamo anche discusso alcune delle funzioni e dei metodi della classe stringstream che ci aiutano a fare le conversioni menzionate.
Lettura consigliata = >> Converti stringa in numero intero in Java e Metodi per convertire Int in String in Java
Nel nostro prossimo tutorial impareremo le funzioni di conversione per i tipi di dati carattere.
=> Controlla qui i tutorial di formazione approfonditi su C ++.
Lettura consigliata
- Funzioni stringa Python
- Funzioni di conversione dei caratteri C ++: da char a int, da char a stringa
- Java String con String Buffer e String Builder Tutorial
- Funzioni stringa in C ++: getline, sottostringa, lunghezza della stringa e altro
- C # Converti stringa in Int utilizzando i metodi Parse, Convert e TryParse
- Funzioni stringa VBScript: funzioni VBScript inStr, Replace, Mid e Trim
- Python String Split Tutorial
- Esercitazione sulle stringhe in C # - Metodi sulle stringhe con esempi di codice