c string conversion functions
Acest tutorial acoperă funcțiile de conversie a șirurilor C ++ care pot fi utilizate pentru a converti șirul în int & double și int într-un șir etc.:
Este obișnuit să convertim șirul la numere precum întreg și dublu atunci când dezvoltăm aplicații C ++.
Acest subiect acoperă funcțiile care pot fi utilizate pentru a converti eficient șirurile în valori int & double și numerice într-un șir.
=> Citiți aici seria populară de formare C ++.
cum să intermitem Windows 10
Ce veți învăța:
Funcții de conversie a șirurilor C ++
Când programăm aplicații folosind C ++, devine necesară conversia datelor de la un tip la altul. Conversia datelor ar trebui să fie astfel încât să nu se piardă deloc date atunci când convertim datele existente într-un tip nou. Acest lucru este valabil mai ales atunci când convertim datele șirului în numere și invers.
În acest tutorial, vom discuta diferitele funcții pentru a converti obiectul std :: string în tipuri de date numerice, inclusiv număr întreg și dublu.
Conversia șirului în tipuri numerice în C ++
În general, există două metode comune pentru a converti șirul în numere în C ++.
- Folosind funcțiile stoi și atoi care se reproduc pentru toate tipurile de date numerice.
- Folosind clasa stringstream.
Să discutăm fiecare metodă în detaliu.
Utilizarea funcțiilor stoi și atoi
Clasa std :: string acceptă diferite funcții pentru a converti șirul în întreg, lung, dublu, plutitor etc. Funcțiile de conversie acceptate de std :: string sunt tabelate după cum urmează:
Funcţie | Descriere |
---|---|
permanent stol stoll | Convertește șirul în întreg (inclusiv tipurile lungi și lungi). |
atoi atol atol | Convertește șirul de octeți în întreg (inclusiv tipurile lungi și lungi lungi). |
a stat praf stold | Convertește șirul de octeți în valori în virgulă mobilă (inclusiv tipuri flotante, duble și duble lungi). |
stoul stoull | Convertește șirul de octeți în număr întreg nesemnat (inclusiv tipuri lungi nesemnate și lungi lungi nesemnate). |
Notă: Cu excepția funcțiilor de conversie a șirului de octeți (atoi), toate celelalte funcții de conversie sunt prezente începând cu C ++ 11. Acum vom discuta despre funcțiile de conversie pentru a converti șirul în int și șirul în dublu.
String to int Folosind stoi () și atoi ()
permanent()
Prototipul funcției: stoi (const std :: string & str, std :: size_t * pos = 0, int base = 10);
Parametri:
str => Șir de convertit
pos => Adresa unui număr întreg pentru a stoca numărul de caractere procesate; implicit = 0
bază => baza numărului; implicit = 0
Valoare returnată: Întreg echivalent cu șirul specificat.
Excepții: std :: invalid_argument => Dacă nu se poate efectua nicio conversie.
Std :: out_of_range => Dacă valoarea convertită este în afara intervalului de tip de rezultat.
Descriere: Funcția stoi () ia un șir ca argument și returnează o valoare întreagă. Va arunca o excepție dacă valoarea convertită este în afara intervalului sau dacă conversia nu poate fi efectuată.
Să luăm un exemplu de programare pentru a înțelege mai bine această funcție.
#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 << '
'; }
Ieșire:
standuri („53”) este 53
standuri („3,142”) este 3
stoi („31477 cu char”) este 31477
În programul de mai sus, am folosit funcția stoi cu trei șiruri diferite. Rețineți că, în timp ce convertiți datele șirului într-o valoare întreagă, funcția aruncă spațiile albe sau orice alte caractere.
Prin urmare, în cazul mystr2 (3.142), funcția a eliminat totul după punctul zecimal. În mod similar, în cazul mystr3 („31477 cu char”), doar numărul a fost luat în considerare. Alte conținuturi ale șirului au fost eliminate.
atoi ()
Prototipul funcției: int atoi( const char *str );
Parametri: str => Pointer către șir de octeți terminat nul.
Valoare returnată:
Succes => Valoare întreagă corespunzătoare argumentului str.
Eșec => Nedefinit dacă valoarea convertită este în afara intervalului.
0 => Dacă nu se poate efectua nicio conversie.
Descriere: Această funcție convertește un șir de octeți într-o valoare întreagă. Funcția atoi () elimină orice spații albe până când se întâlnește un caracter care nu este un spațiu alb și apoi ia caracterele unul câte unul pentru a forma o reprezentare validă a numărului întreg și îl convertește în întreg.
Exemplu de funcție 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 << '
'; }
Ieșire:
cum joci fișiere swf
atoi („24”) este 24
atoi („3.142”) este 3
atoi („23446 cu char”) este 23446
atoi („cuvinte cu 3”) este 0
Așa cum se arată în programul de mai sus, funcția atoi ia un șir de octeți ca argument și îl convertește într-o valoare întreagă. Spațiile albe sau orice alte caractere sunt aruncate. Dacă valoarea convertită este în afara intervalului, atunci se returnează 0.
Șir de dublat Folosind stod ()
Prototipul funcției: stod (const std :: string & str, std :: size_t * pos = 0);
Parametri:
str => Șir de convertit
pos => Adresa unui număr întreg pentru a stoca numărul de caractere procesate; implicit = 0
Valoare returnată: Valoare dublă echivalentă cu șirul specificat.
Excepții:
std :: invalid_argument => Dacă nu se poate efectua nicio conversie.
std :: out_of_range => Dacă valoarea convertită este în afara intervalului de tip de rezultat.
Descriere: Această funcție convertește un șir într-o valoare în virgulă mobilă. Funcția stod () elimină orice spații albe până când se întâlnește un caracter care nu este un spațiu alb și apoi ia caracterele unul câte unul pentru a forma o reprezentare validă în virgulă mobilă și o convertește în virgulă mobilă.
Să vedem un exemplu care demonstrează această funcție.
#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 << '
'; }
Ieșire:
stod („24”) este 24
stod („3,142”) este 3,142
stod („23446 cu char”) este 23446
Programul de mai sus demonstrează utilizarea funcției „stod”. Ieșirea indică valorile duble convertite ale șirurilor specificate.
Utilizarea clasei stringstream
Utilizarea clasei stringstream este cel mai simplu mod de a converti valorile șirurilor în valori numerice.
Vom învăța clasa stringstream în detaliu în tutorialele noastre ulterioare. Dat mai jos este un program C ++ care demonstrează conversia șirului în valori numerice.
#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< Ieșire:
Valoarea numărului: 2508
Valoarea dNum: 3,142
În programul de mai sus, vedem că am declarat un obiect șir. Apoi declarăm un obiect stringstream și trecem șirul către acest obiect astfel încât șirul să fie convertit într-un obiect stringstream. Apoi, acest obiect stringstream este trecut la o valoare întreagă folosind operatorul „>>” care convertește obiectul stringstream într-un număr întreg.
În mod similar, am convertit și șirul în dublu. Deci, atâta timp cât operatorul „>>” acceptă tipul de date, putem converti un șir în orice tip de date folosind un obiect stringstream.
Conversia int În șir În C ++
De asemenea, putem converti valorile numerice în valori șir. Există două metode de conversie a valorilor numerice în valori șir și le vom discuta pe cele de mai jos.
Folosind funcția to_string ()
Prototipul funcției: std :: string to_string (valoare tip);
Parametri: value => Valoare numerică de convertit
Valoare returnată: Valoarea șirului care deține valoarea convertită.
Excepție: poate arunca std :: bad_alloc
Descriere: Această funcție to_string () convertește valoarea numerică transmisă ca argument în tip șir și returnează șirul.
Să vedem un exemplu al acestei funcții folosind un program 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; }
Ieșire:
Reprezentarea șirului întregului: 20 Reprezentarea șirului float: 30.500000
qa manager interviu intrebari raspunsuri pdf
Aici avem două variabile, fiecare de tip întreg și float. Apoi apelăm metoda to_string de două ori cu argument întreg și float și convertim ambele valori în valori de șir. În cele din urmă, afișăm valorile convertite.
Rețineți că convertirea valorii în virgulă mobilă în șir poate da rezultate neașteptate, deoarece numărul de cifre semnificative poate fi zero cu metoda to_string.
Utilizarea clasei stringstream
Folosind clasa stringstream, stringstream declară mai întâi un obiect de flux care introduce o valoare numerică ca flux în obiect. Apoi folosește funcția „str ()” pentru a converti intern o valoare numerică în șir.
Exemplu:
#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; }
Ieșire:
Șirul format din întreg este: 26082019
Șirul format din dublu este: 3.142
În această listă, am definit un număr întreg și o valoare dublă. Apoi avem obiectul ostringstream folosind care ascundem valoarea numerică obiectului stringstream. Aceasta folosește „<<’ operator. Next, we use the str() method on a stringstream object to convert it to a string.
Concluzie
În acest tutorial, am discutat despre funcțiile de conversie care convertesc un șir în tipuri numerice și tipuri numerice înapoi într-un șir. Am văzut în detaliu funcțiile și exemplele funcției stoi (), stod (), atoi (), to_string (). De asemenea, am discutat câteva dintre funcțiile și metodele clasei stringstream care ne ajută să facem conversiile menționate.
Citire recomandată = >> Conversia șirului la întreg în Java și Metode pentru a converti Int în șir în Java
În următorul nostru tutorial, vom învăța funcțiile de conversie pentru tipurile de date de caractere.
=> Consultați aici tutorialele de instruire în profunzime C ++.
Lectură recomandată
- Funcții Python String
- Funcții de conversie a caracterelor C ++: char la int, char la șir
- Java String cu buffer de șiruri și tutorial de generare de șiruri
- Funcțiile șirului în C ++: getline, sub șir, lungimea șirului și altele
- C # Conversia șirului în Int folosind metodele Parse, Convert & TryParse
- Funcții șir VBScript: Funcții VBScript inStr, Înlocuire, Mid și Trim
- Tutorial Python String Split
- C # String Tutorial - Metode de șiruri cu exemple de coduri