c string conversion functions
Denna handledning täcker C ++ - strängkonverteringsfunktionerna som kan användas för att konvertera strängen till int & dubbel och int till en sträng etc:
Det är vanligt att konvertera strängar till nummer som heltal och dubbelt när vi utvecklar C ++ - applikationer.
Detta ämne täcker funktionerna som kan användas för att effektivt konvertera strängarna till int & dubbel och numeriska värden till en sträng.
=> Läs igenom den populära C ++ träningsserien här.
Vad du kommer att lära dig:
C ++ - strängkonverteringsfunktioner
När vi programmerar applikationer som använder C ++ blir det nödvändigt att konvertera data från en typ till en annan. Omvandlingen av data ska vara sådan att inga data går förlorade alls när vi konverterar befintlig data till en ny typ. Detta gäller särskilt när vi konverterar strängdata till siffror och vice versa.
I denna handledning kommer vi att diskutera de olika funktionerna för att konvertera std :: strängobjekt till numeriska datatyper inklusive heltal och dubbel.
Konvertera sträng till numeriska typer i C ++
I allmänhet finns det två vanliga metoder för att konvertera sträng till nummer i C ++.
- Använda stoi- och atoi-funktioner som replikeras för alla numeriska datatyper.
- Använda stringstream-klass.
Låt oss diskutera varje metod i detalj.
skillnaden mellan c c ++ och java
Använda stoi och atoi-funktioner
std :: strängklass stöder olika funktioner för att konvertera sträng till heltal, lång, dubbel, flyt, etc. Konverteringsfunktionerna som stöds av std :: sträng tabelliseras enligt följande:
| Fungera | Beskrivning |
|---|---|
| stående stol stoll | Konverterar sträng till heltal (inklusive långa och långa långa typer). |
| atoi atoll atoll | Konverterar byte-sträng till heltal (inklusive långa och långa långa typer). |
| stod damm stold | Konverterar byte-sträng till flytande värden (inklusive flytande, dubbla och långa dubbeltyper). |
| stul stoull | Konverterar byte-sträng till osignerat heltal (inklusive osignerade långa och osignerade långa långtyper). |
Notera: Med undantag för funktionerna för att konvertera byte-sträng (atoi) finns alla andra konverteringsfunktioner från C ++ 11 och framåt. Nu kommer vi att diskutera konverteringsfunktionerna för att konvertera sträng till int och sträng till dubbel.
String to int Använda stoi () och atoi ()
stående()
Funktionsprototyp: stoi (const std :: string & str, std :: size_t * pos = 0, int base = 10);
Parameter (er):
str => Sträng för att konvertera
pos => Adress för ett heltal för att lagra antalet bearbetade tecken; standard = 0
bas => Talbas; standard = 0
Returvärde: Heltal motsvarande angiven sträng.
Undantag: std :: invalid_argument => Om ingen konvertering kan utföras.
Std :: out_of_range => Om konverterat värde ligger utanför intervallet för resultattypen.
Beskrivning: Funktionen stoi () tar en sträng som ett argument och returnerar ett heltalvärde. Det ger ett undantag om det konverterade värdet är utanför intervallet eller om konverteringen inte kan utföras.
Låt oss ta ett programmeringsexempel för att bättre förstå denna 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”) är 53
står (“3,142”) är 3
stoi ('31477 med röding') är 31477
c ++ - intervju kodande frågor
I ovanstående program har vi använt stoi-funktion med tre olika strängar. Observera att när du konverterar strängdata till ett heltal, kasserar funktionen de vita blankstegen eller andra tecken.
Därför i fallet med mystr2 (3.142), kasserade funktionen allt efter decimaltecken. På samma sätt, i fallet med mystr3 (”31477 med röding”) togs endast numret i beaktande. Övrigt innehåll i strängen kasserades.
atoi ()
Funktionsprototyp: int atoi (const char * str);
Parameter (er): str => Pekare till nollavslutad byte-sträng.
Returvärde:
Framgång => Heltalsvärde motsvarande argumentstr.
Fel => Odefinierad om det konverterade värdet ligger utanför intervallet.
0 => Om ingen konvertering kan utföras.
Beskrivning: Denna funktion omvandlar en bytesträng till ett heltal. Funktionen atoi () kasserar alla mellanslag tills ett tecken som inte är mellanslag påträffas och tar sedan tecknen en efter en för att bilda en giltig heltalsrepresentation och konverterar den till ett heltal.
Exempel 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:
atoi (“24”) är 24
atoi (“3.142”) är 3
atoi (”23446 med röding”) är 23446
atoi ('ord med 3') är 0
Som visas i ovanstående program tar atoi-funktionen en bytesträng som ett argument och konverterar den till ett heltal. De vita utrymmena eller andra tecken kastas. Om det konverterade värdet är utanför intervallet returneras 0.
String to double Använd stod ()
Funktionsprototyp: stod (const std :: string & str, std :: size_t * pos = 0);
Parameter (er):
str => Sträng för att konvertera
pos => Adress till ett heltal för att lagra antalet bearbetade tecken. standard = 0
Returvärde: Dubbelvärde motsvarande den angivna strängen.
Undantag:
std :: invalid_argument => Om ingen konvertering kan utföras.
std :: out_of_range => Om konverterat värde ligger utanför intervallet för resultattyp.
Beskrivning: Den här funktionen omvandlar en sträng till ett flytpunktsvärde. Funktion stod () kasserar alla blanksteg tills ett icke-blankstegstecken påträffas och tar sedan karaktärerna en efter en för att bilda en giltig representativ för flytpunkt och konverterar den till flytpunkt.
Låt oss se ett exempel som visar den här funktionen.
#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”) är 24
stod (“3.142”) är 3.142
stod (”23446 med röding”) är 23446
Ovanstående program visar användningen av 'stod' -funktionen. Utgången anger de konverterade dubbla värdena för de angivna strängarna.
Använda stringstream Class
Att använda stringstream class är det enklaste sättet att konvertera strängvärden till numeriska värden.
Vi kommer att lära oss strängströmsklassen i detalj i våra efterföljande handledning. Nedan följer ett C ++ - program som visar konvertering av sträng till numeriska värden.
#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ärde på tal: 2508
Värde på dNum: 3.142
I programmet ovan ser vi att vi har förklarat ett strängobjekt. Sedan förklarar vi ett strängströmsobjekt och skickar strängen till det här objektet så att strängen konverteras till ett strängströmsobjekt. Därefter skickas detta strängströmsobjekt till ett heltal med hjälp av '>>' -operatören som omvandlar strängströmsobjektet till ett heltal.
På samma sätt har vi också konverterat strängen till dubbel. Så länge som '>>' operatören stöder datatypen kan vi konvertera en sträng till vilken datatyp som helst med hjälp av ett strängströmsobjekt.
Konvertera int till sträng i C ++
Vi kan också konvertera numeriska värden till strängvärden. Det finns två metoder för att konvertera numeriska värden till strängvärden och vi kommer att diskutera dem nedan.
Använda to_string () -funktionen
Funktionsprototyp: std :: string to_string (typvärde);
Parameter (er): värde => Numeriskt värde att konvertera
Returvärde: Strängvärde som håller det konverterade värdet.
Undantag: kan kasta std :: bad_alloc
Beskrivning: Denna funktion to_string () konverterar det numeriska värdet som skickats som ett argument till strängtyp och returnerar strängen.
Låt oss se ett exempel på den här funktionen med ett 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:
Strängrepresentationen av heltal: 20 Strängrepresentationen för float: 30.500000
verktyg som används i stor dataanalys
Här har vi två variabler, var och en av typen heltal och float. Sedan kallar vi to_string-metoden två gånger med heltal och float-argument och konverterar båda värdena till strängvärden. Slutligen visar vi de konverterade värdena.
Observera att konvertering av flytpunktsvärdet till strängen kan ge oväntade resultat eftersom antalet signifikanta siffror kan vara noll med metoden to_string.
Använda stringstream Class
Med hjälp av stringstream class deklarerar stringstream först ett stream-objekt som infogar ett numeriskt värde som en stream i objektet. Den använder sedan funktionen 'str ()' för att internt konvertera ett numeriskt värde till sträng.
Exempel:
#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:
Strängen bildad av heltal är: 26082019
Strängen bildad av dubbel är: 3.142
I denna lista har vi definierat ett heltal och ett dubbelt värde. Sedan har vi strängströmsobjektet med vilket vi täcker det numeriska värdet till strängströmsobjektet. Detta använder<<’ operator. Next, we use the str() method on a stringstream object to convert it to a string.
Slutsats
I denna handledning diskuterade vi konverteringsfunktioner som konverterar en sträng till numeriska typer och numeriska typer tillbaka till en sträng. Vi har sett funktionerna och exemplen på stoi (), stod (), atoi (), to_string () funktion i detalj. Vi diskuterade också några av strängströmens klassfunktioner och metoder som hjälper oss att göra de nämnda omvandlingarna.
Rekommenderad läsning = >> Konvertera sträng till heltal i Java och Metoder för att konvertera Int till String i Java
I vår nästa handledning lär vi oss konverteringsfunktioner för teckendatatyper.
=> Kontrollera de fördjupade C ++ -utbildningsövningarna här.
Rekommenderad läsning
- Python-strängfunktioner
- C ++ teckenkonvertering funktioner: char till int, char till sträng
- Java String med String Buffer och String Builder Tutorial
- Strängfunktioner i C ++: getline, substring, stränglängd och mer
- C # Konvertera sträng till int med hjälp av analys-, konverterings- och TryParse-metoder
- VBScript-strängfunktioner: VBScript inStr, Ersätt, Mid och Trim-funktioner
- Python String Split Tutorial
- C # Stränghandledning - Strängmetoder med kodexempel