c string conversion functions
Tento tutoriál sa zaoberá konverznými funkciami reťazca C ++, ktoré možno použiť na prevod reťazca na int & double a int na reťazec atď .:
Pri vývoji aplikácií v C ++ je bežné prevádzať reťazce na čísla ako celé číslo a dvojnásobok.
Táto téma sa zaoberá funkciami, ktoré možno použiť na efektívny prevod reťazcov na int a dvojnásobné a číselné hodnoty na reťazec.
=> Prečítajte si populárnu sériu školení C ++ tu.
najlepšia stránka na stiahnutie videí z youtube
Čo sa dozviete:
Funkcie konverzie reťazcov C ++
Keď programujeme aplikácie pomocou C ++, bude nevyhnutné prevádzať údaje z jedného typu na druhý. Konverzia údajov by mala byť taká, aby sa pri konverzii existujúcich údajov na nový typ nestratili vôbec žiadne údaje. Platí to najmä vtedy, keď prevádzame reťazcové údaje na čísla a naopak.
V tomto výučbe sa budeme zaoberať rôznymi funkciami na prevod objektu std :: string na číselné dátové typy vrátane celých a dvojitých.
Preveďte reťazec na numerické typy v C ++
Všeobecne existujú dve bežné metódy na prevod reťazca na čísla v C ++.
- Používanie funkcií stoi a atoi, ktoré sa replikujú pre všetky číselné dátové typy.
- Používanie triedy stringstream.
Poďme si každú metódu podrobne rozobrať.
Používanie funkcií stoi a atoi
trieda std :: string podporuje rôzne funkcie na prevod reťazca na celočíselné, dlhé, dvojité, plavákové atď. Konverzné funkcie podporované std :: string sú tabuľkovo usporiadané takto:
Funkcia | Popis |
---|---|
stojaci stol stoll | Skonvertuje reťazec na celé číslo (vrátane dlhých a dlhých typov). |
atoi atol atol | Skonvertuje bajtový reťazec na celé číslo (vrátane dlhých a dlhých typov). |
stál prach stold | Skonvertuje bajtový reťazec na hodnoty s pohyblivou desatinnou čiarkou (vrátane float, double a long type). |
páchnuť stoull | Skonvertuje bajtový reťazec na nepodpísané celé číslo (vrátane nepodpísaných dlhých a nepodpísaných dlhých typov). |
Poznámka: Okrem funkcií na prevod bajtového reťazca (atoi) sú všetky ostatné prevodné funkcie k dispozícii od C ++ 11 a novších. Teraz budeme diskutovať o konverzných funkciách na prevod reťazca na int a reťazca na dvojnásobok.
String to int Používanie stoi () a atoi ()
stojaci()
Funkčný prototyp: stoi (const std :: string & str, std :: size_t * pos = 0, int base = 10);
Parametre:
str => Reťazec na prevod
pos => Adresa celého čísla na uloženie počtu spracovaných znakov; predvolená hodnota = 0
base => Číselná báza; predvolená hodnota = 0
Návratová hodnota: Celé číslo ekvivalentné uvedenému reťazcu.
Výnimky: std :: invalid_argument => Ak nie je možné vykonať žiadny prevod.
Std :: out_of_range => Ak je prevedená hodnota mimo rozsah rozsahu typu výsledku.
Popis: Funkcia stoi () vezme reťazec ako argument a vráti celočíselnú hodnotu. Ak prevedená hodnota je mimo rozsahu alebo ak ju nie je možné vykonať, spôsobí výnimku.
Zoberme si príklad programovania, aby sme tejto funkcii lepšie porozumeli.
#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 << '
'; }
Výkon:
stojany („53“) je 53
stojany („3 142“) je 3
stoi („31477 s char“) je 31477
Vo vyššie uvedenom programe sme použili funkciu stoi s tromi rôznymi reťazcami. Upozorňujeme, že pri prevode údajov reťazca na celočíselnú hodnotu funkcia zahodí medzery alebo akékoľvek iné znaky.
Preto v prípade mystr2 (3.142) funkcia zahodila všetko za desatinnou čiarkou. Podobne sa v prípade mystr3 („31477 s char“) bralo do úvahy iba číslo. Ostatný obsah reťazca bol zlikvidovaný.
atoi ()
Funkčný prototyp: int atoi (const char * str);
Parametre: str => Ukazovateľ na nulový bajtový reťazec.
Návratová hodnota:
Úspech => Celá hodnota zodpovedajúca argumentu str.
Zlyhanie => Nedefinované, ak je prevedená hodnota mimo rozsahu.
0 => Ak nie je možné vykonať žiadnu konverziu.
Popis: Táto funkcia prevádza bajtový reťazec na celočíselnú hodnotu. Funkcia atoi () zahodí všetky medzery, kým sa nezistí znak, ktorý nie je medzerou, a potom jednotlivé znaky po jednom vytvorí platnú celočíselnú číselnú reprezentáciu a prevedie ju na celé číslo.
Príklad funkcie 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 << '
'; }
Výkon:
aký je najlepší program na odstránenie škodlivého softvéru
atoi („24“) je 24
atoi („3,142“) je 3
atoi („23446 s char“) je 23446
atoi („slová s 3“) je 0
Ako je uvedené v predchádzajúcom programe, funkcia atoi vezme bajtový reťazec ako argument a prevedie ho na celočíselnú hodnotu. Prázdne miesta alebo akékoľvek iné znaky sú zahodené. Ak je prevedená hodnota mimo rozsah, vráti sa 0.
Reťazec na zdvojnásobenie pomocou stod ()
Funkčný prototyp: stod (const std :: string & str, std :: size_t * pos = 0);
Parametre:
str => Reťazec na prevod
pos => Adresa celého čísla na uloženie počtu spracovaných znakov; predvolená hodnota = 0
Návratová hodnota: Dvojitá hodnota zodpovedá zadanému reťazcu.
Výnimky:
std :: invalid_argument => Ak nie je možné vykonať žiadny prevod.
std :: out_of_range => Ak je prevedená hodnota mimo rozsah rozsahu typu výsledku.
Popis: Táto funkcia prevádza reťazec na hodnotu s pohyblivou rádovou čiarkou. Funkcia stod () zahodí všetky medzery, kým nenarazíte na znak iného ako bieleho znaku, a potom jednotlivé znaky po jednom vytvorí platnú reprezentáciu čísla s pohyblivou rádovou čiarkou a prevedie ju na plávajúcu desatinnú čiarku.
Pozrime sa na príklad demonštrujúci túto funkciu.
#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 << '
'; }
Výkon:
stod („24“) je 24
stod („3,142“) je 3,142
stod („23446 so znakom“) je 23446
Vyššie uvedený program demonštruje použitie funkcie „stod“. Výstup označuje prevedené dvojnásobné hodnoty zadaných reťazcov.
Používanie triedy stringstream
Použitie triedy stringstream je najjednoduchší spôsob, ako prevádzať hodnoty reťazca na číselné hodnoty.
Triedu stringstream sa budeme učiť podrobne v našich ďalších tutoriáloch. Ďalej je uvedený program v C ++, ktorý demonštruje prevod reťazca na číselné hodnoty.
#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< Výkon:
Hodnota num: 2508
Hodnota dNum: 3,142
Vo vyššie uvedenom programe vidíme, že sme vyhlásili reťazcový objekt. Potom vyhlásime objekt stringstream a odovzdáme reťazec tomuto objektu, aby sa reťazec previedol na objekt stringstream. Potom sa tento objekt stringstream odovzdá celočíselnej hodnote pomocou operátora „>>“, ktorý prevedie objekt stringstream na celé číslo.
Podobne sme tiež previedli reťazec na dvojitý. Pokiaľ operátor „>>“ podporuje dátový typ, môžeme reťazec previesť na akýkoľvek dátový typ pomocou objektu stringstream.
Prevod int na reťazec v C ++
Môžeme tiež previesť číselné hodnoty na hodnoty reťazca. Existujú dva spôsoby prevodu číselných hodnôt na hodnoty reťazcov a tie si rozoberieme nižšie.
Pomocou funkcie to_string ()
Funkčný prototyp: std :: string to_string (hodnota typu);
Parametre: value => Číselná hodnota na prevod
Návratová hodnota: Hodnota reťazca, ktorá obsahuje prevedenú hodnotu.
Výnimka: môže hodiť std :: bad_alloc
Popis: Táto funkcia to_string () prevádza číselnú hodnotu odovzdanú ako argument na typ reťazca a vráti reťazec.
Pozrime sa na príklad tejto funkcie využívajúcej 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; }
Výkon:
Reťazcové zastúpenie celého čísla: 20 Reťazcové zastúpenie floatu: 30 500 000
nezávislé nezaujaté recenzie bezplatného 64-bitového firewallu
Tu máme dve premenné, každú typu integer a float. Potom dvakrát zavoláme metódu to_string s argumentom integer a float a obe hodnoty prevedieme na hodnoty reťazca. Na záver zobrazíme prevedené hodnoty.
Upozorňujeme, že prevod hodnoty s pohyblivou rádovou čiarkou na reťazec môže priniesť neočakávané výsledky, pretože počet platných číslic môže byť pri metóde to_string nulový.
Používanie triedy stringstream
Pomocou triedy stringstream najskôr stringstream deklaruje objekt toku, ktorý do objektu vloží číselnú hodnotu ako prúd. Potom použije funkciu „str ()“ na interný prevod číselnej hodnoty na reťazec.
Príklad:
#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; }
Výkon:
Reťazec vytvorený z celého čísla je: 26082019
Reťazec tvorený z dvojitých je: 3.142
V tomto zozname sme definovali celé číslo a dvojnásobnú hodnotu. Potom máme objekt ostringstream, pomocou ktorého prevedieme číselnú hodnotu na objekt stringstream. Toto používa „<<’ operator. Next, we use the str() method on a stringstream object to convert it to a string.
Záver
V tomto tutoriáli sme sa zaoberali konverznými funkciami, ktoré prevádzajú reťazec na číselné typy a číselné typy späť na reťazec. Videli sme podrobne funkcie a príklady funkcií stoi (), stod (), atoi (), to_string (). Diskutovali sme tiež o niektorých funkciách a metódach triedy stringstream, ktoré nám pomáhajú robiť uvedené konverzie.
Odporúčané čítanie = >> Preveďte reťazec na celé číslo v Jave a Metódy prevodu Int na String v Jave
V našom ďalšom návode sa naučíme funkcie prevodu pre dátové typy znakov.
=> Tu si pozrite podrobné výukové návody C ++.
Odporúčané čítanie
- Funkcie reťazca Python
- Funkcie konverzie znakov C ++: char to int, char to string
- Výukový program Java String s programom String Buffer a String Builder
- Funkcie reťazca v C ++: getline, podreťazec, dĺžka reťazca a ďalšie
- C # Preveďte reťazec na Int pomocou metód syntaktickej analýzy, prevodu a TryParse
- Funkcie reťazca VBScript: VBScript funkcie inStr, Replace, Mid a Trim
- Výukový program pre rozdelenie reťazcov Python
- C # String Tutorial - Metódy reťazcov s príkladmi kódu