c string conversion functions
Denne vejledning dækker C ++ strengkonverteringsfunktioner, der kan bruges til at konvertere strengen til int & dobbelt og int til en streng osv .:
Det er almindeligt at konvertere streng til tal som heltal og dobbelt når vi udvikler C ++ applikationer.
Dette emne dækker de funktioner, der kan bruges til effektivt at konvertere strengene til int & dobbelt og numeriske værdier til en streng.
=> Læs gennem den populære C ++ træningsserie her.
google webmasterværktøjer brudt linkkontrol
Hvad du lærer:
C ++ strengkonvertering funktioner
Når vi programmerer applikationer ved hjælp af C ++, bliver det nødvendigt at konvertere data fra en type til en anden. Konverteringen af data skal være sådan, at der slet ikke går tabt data, når vi konverterer de eksisterende data til en ny type. Dette gælder især når vi konverterer strengdata til tal og omvendt.
I denne vejledning diskuterer vi de forskellige funktioner til at konvertere std :: strengobjekt til numeriske datatyper inklusive heltal og dobbelt.
Konverter streng til numeriske typer i C ++
Generelt er der to almindelige metoder til at konvertere streng til tal i C ++.
- Brug af stoi- og atoi-funktioner, der replikerer for alle de numeriske datatyper.
- Brug af stringstream klasse.
Lad os diskutere hver metode i detaljer.
Brug af stoi og atoi-funktioner
std :: strengklasse understøtter forskellige funktioner til at konvertere streng til heltal, lang, dobbelt, flyde osv. Konverteringsfunktionerne understøttet af std :: streng er tabulariseret som følger:
Fungere | Beskrivelse |
---|---|
stående stol spadsere | Konverterer streng til heltal (inklusive lange og lange lange typer). |
atoi atoll atoll | Konverterer byte-streng til heltal (inklusive lange og lange lange typer). |
stod støv stold | Konverterer byte-streng til flydende punktværdier (inklusive float-, dobbelt- og lange dobbelttyper). |
stul stoull | Konverterer byte-streng til usigneret heltal (inklusive usignerede lange og usignerede lange lange typer). |
Bemærk: Bortset fra funktionerne til konvertering af byte-streng (atoi) er alle de andre konverteringsfunktioner til stede fra C ++ 11 og fremefter. Nu vil vi diskutere konverteringsfunktionerne for at konvertere streng til int og streng til dobbelt.
String to int Brug af stoi () og atoi ()
stående ()
Funktionsprototype: stoi (const std :: string & str, std :: size_t * pos = 0, int base = 10);
Parameter (er):
str => Streng til konvertering
pos => Adresse på et heltal til lagring af antal behandlede tegn; standard = 0
base => Nummerbasen; standard = 0
Returværdi: Heltal svarende til den angivne streng.
Undtagelser: std :: invalid_argument => Hvis der ikke kan udføres nogen konvertering.
Std :: out_of_range => Hvis den konverterede værdi er uden for området for resultattypen.
Beskrivelse: Funktionen stoi () tager en streng som et argument og returnerer en heltalværdi. Det kaster en undtagelse, hvis den konverterede værdi er uden for området, eller hvis konverteringen ikke kan udføres.
Lad os tage et programmeringseksempel for bedre at forstå denne funktion.
#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 << '
'; }
Produktion:
står (“53”) er 53
stativer (“3.142”) er 3
stoi (“31477 med char”) er 31477
I ovenstående program har vi brugt stoi-funktion med tre forskellige strenge. Bemærk, at når du konverterer strengdata til en heltal, forkaster funktionen de hvide mellemrum eller andre tegn.
Derfor i tilfælde af mystr2 (3.142) kasserede funktionen alt efter decimaltegnet. Tilsvarende i tilfælde af mystr3 (“31477 med char”) blev kun nummeret taget i betragtning. Andet indhold af strengen blev kasseret.
atoi ()
Funktionsprototype: int atoi (const char * str);
Parameter (er): str => Markør til nultermineret byte-streng.
Returværdi:
Succes => Heltalsværdi svarende til argumentstr.
Fejl => Udefineret, hvis den konverterede værdi er uden for området.
0 => Hvis der ikke kan udføres nogen konvertering.
Beskrivelse: Denne funktion konverterer en byte streng til en heltal værdi. Funktion atoi () kasserer alle mellemrum, indtil der opstår et ikke-mellemrumstegn og tager derefter tegnene en efter en for at danne en gyldig repræsentation af heltal og konverterer den til et heltal.
Eksempel på atoi-funktion
#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 << '
'; }
Produktion:
uafhængige upartiske anmeldelser af gratis 64-bit firewall
atoi (“24”) er 24
atoi (“3.142”) er 3
atoi (“23446 med char”) er 23446
atoi ('ord med 3') er 0
Som vist i ovenstående program tager atoi-funktionen en byte-streng som et argument og konverterer den til en heltalværdi. De hvide mellemrum eller andre tegn kasseres. Hvis den konverterede værdi er uden for området, returneres 0.
Streng til dobbelt ved hjælp af stod ()
Funktionsprototype: stod (const std :: string & str, std :: size_t * pos = 0);
Parameter (er):
str => Streng til konvertering
pos => Adresse på et heltal til lagring af antallet af behandlede tegn; standard = 0
Returværdi: Dobbelt værdi svarende til den angivne streng.
Undtagelser:
std :: invalid_argument => Hvis der ikke kan udføres nogen konvertering.
std :: out_of_range => Hvis den konverterede værdi er uden for området for resultattypen.
Beskrivelse: Denne funktion konverterer en streng til en flydende punktværdi. Funktion stod () kasserer alle mellemrum, indtil der opstår et tegn, der ikke er mellemrum, og tager derefter tegnene en efter en for at danne en gyldig repræsentation af flydende nummer og konverterer den til flydende punkt.
Lad os se et eksempel, der demonstrerer denne funktion.
#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 << '
'; }
Produktion:
stod(“24”) is 24
stod(“3.142”) is 3.142
stod (“23446 med char”) er 23446
Ovenstående program demonstrerer brugen af “stod” -funktionen. Outputtet angiver de konverterede dobbeltværdier for de angivne strenge.
Brug af strengstrømsklasse
Brug af strengstrømsklasse er den nemmeste måde at konvertere strengværdier til numeriske værdier.
Vi lærer stringstream-klassen i detaljer i vores efterfølgende tutorials. Nedenfor er et C ++ - program, der demonstrerer konvertering af streng til numeriske værdier.
#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< Produktion:
Værdi af tal: 2508
Værdi af dNum: 3.142
I ovenstående program ser vi, at vi har erklæret et strengobjekt. Derefter erklærer vi et stringstream-objekt og sender strengen til dette objekt, så strengen konverteres til et stringstream-objekt. Derefter sendes dette stringstream-objekt til en heltalsværdi ved hjælp af '>>' operator, der konverterer stringstream-objektet til et heltal.
På samme måde har vi også konverteret strengen til dobbelt. Så længe operatøren '>>' understøtter datatypen, kan vi konvertere en streng til en hvilken som helst datatype ved hjælp af et stringstream-objekt.
Konverter int til streng i C ++
Vi kan også konvertere numeriske værdier til strengværdier. Der er to metoder til at konvertere numeriske værdier til strengværdier, og vi vil diskutere dem nedenfor.
Brug af to_string () -funktionen
Funktionsprototype: std :: string to_string (type værdi);
Parameter (er): værdi => Numerisk værdi, der skal konverteres
Returværdi: Strengværdi, der holder den konverterede værdi.
Undtagelse: kan kaste std :: bad_alloc
Beskrivelse: Denne funktion to_string () konverterer den numeriske værdi, der er sendt som et argument, til strengetype og returnerer strengen.
Lad os se et eksempel på denne funktion ved hjælp af et C ++ - program.
#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; }
Produktion:
Strengrepræsentationen af heltal: 20 Strengrepræsentationen for float: 30.500000
java hvordan man opretter en liste
Her har vi to variabler, hver af typen heltal og float. Derefter kalder vi to_string-metoden to gange med heltal og float-argument og konverterer begge værdier til strengværdier. Endelig viser vi de konverterede værdier.
Bemærk, at konvertering af flydende punktværdien til strengen kan give uventede resultater, da antallet af signifikante cifre kan være nul med metoden to_string.
Brug af strengstrømsklasse
Ved hjælp af stringstream-klasse erklærer stringstream først et stream-objekt, der indsætter en numerisk værdi som en stream i objektet. Derefter bruger den 'str ()' - funktionen til internt at konvertere en numerisk værdi til streng.
Eksempel:
#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; }
Produktion:
Strengen dannet af heltal er: 26082019
Strengen dannet af dobbelt er: 3.142
I denne liste har vi defineret et heltal og en dobbelt værdi. Derefter har vi strudsestream-objektet, hvor vi dækker den numeriske værdi til stringstream-objektet. Dette bruger '<<’ operator. Next, we use the str() method on a stringstream object to convert it to a string.
Konklusion
I denne vejledning diskuterede vi konverteringsfunktioner, der konverterer en streng til numeriske typer og numeriske typer tilbage til en streng. Vi har set funktionerne og eksemplerne på stoi (), stod (), atoi (), to_string () funktion i detaljer. Vi diskuterede også nogle af stringstream-klassefunktionerne og metoderne, der hjælper os med at udføre de nævnte konverteringer.
Anbefalet læsning = >> Konverter streng til heltal i Java og Metoder til at konvertere Int til String i Java
I vores næste tutorial lærer vi konverteringsfunktioner til karakterdatatyper.
=> Tjek dybdegående C ++ træningsvejledninger her.
Anbefalet læsning
- Python-strengfunktioner
- C ++ tegnkonvertering Funktioner: char til int, char til streng
- Java String med String Buffer og String Builder Tutorial
- Strengfunktioner i C ++: getline, substring, strenglængde og mere
- C # Konverter streng til int ved hjælp af Parse, Convert & TryParse-metoder
- VBScript-strengfunktioner: VBScript inStr, Replace, Mid og Trim-funktioner
- Python String Split Tutorial
- C # String Tutorial - Strengmetoder med kodeeksempler