c string conversion functions
Ovaj priručnik pokriva funkcije pretvorbe niza C ++ koje se mogu koristiti za pretvaranje niza u int & double i int u niz itd.:
Uobičajeno je pretvaranje niza u brojeve poput cjelobrojnog i dvostrukog kada razvijamo aplikacije C ++.
Ova tema pokriva funkcije koje se mogu koristiti za učinkovito pretvaranje nizova u int & double i numeričke vrijednosti u niz.
=> Ovdje pročitajte popularne serije obuke za C ++.
Što ćete naučiti:
Funkcije pretvorbe niza C ++
Kada programiramo aplikacije pomoću C ++, postaje neophodno pretvoriti podatke iz jedne vrste u drugu. Pretvorba podataka trebala bi biti takva da se podaci uopće ne gube kada postojeće podatke pretvorimo u novi tip. To je osobito istinito kada pretvaramo niz podataka u brojeve i obrnuto.
U ovom uputstvu razgovarat ćemo o raznim funkcijama za pretvaranje objekta std :: string u numeričke tipove podataka, uključujući cjelobrojne i dvostruke.
Pretvori niz u numeričke vrste u jeziku C ++
Općenito postoje dvije uobičajene metode za pretvaranje niza u brojeve u C ++.
- Korištenje stoi i atoi funkcija koje se repliciraju za sve numeričke tipove podataka.
- Korištenje klase stringstream.
Razmotrimo detaljno svaku metodu.
Korištenje stoi i atoi funkcija
klasa std :: string podržava razne funkcije za pretvaranje niza u cjelobrojne, duge, dvostruke, plutajuće itd. Funkcije pretvorbe koje podržava std :: string tabulirane su na sljedeći način:
Funkcija | Opis |
---|---|
stajati stol stola | Pretvara niz u cijeli broj (uključujući duge i duge duge vrste). |
atoi atol atol | Pretvara bajtni niz u cijeli broj (uključujući duge i duge duge vrste). |
stajao prah ukrao | Pretvara bajtni niz u vrijednosti s pomičnom zarezom (uključujući float, double i long double vrste). |
stoul zaostajati | Pretvara bajtni niz u nepotpisani cijeli broj (uključujući nepotpisane duge i nepotpisane duge duge vrste). |
Bilješka: Osim funkcija za pretvorbu bajtnog niza (atoi), sve ostale funkcije pretvorbe prisutne su od C ++ 11 nadalje. Sada ćemo razgovarati o funkcijama pretvorbe za pretvaranje niza u int i niza u dvostruko.
String to int Korištenje stoi () i atoi ()
informatica powercenter intervju pitanja i odgovori
stajati()
Prototip funkcije: stoi (const std :: string & str, std :: size_t * pos = 0, int base = 10);
Parametar (i):
str => Niz za pretvaranje
pos => Adresa cijelog broja za pohranu broja obrađenih znakova; zadano = 0
baza => Baza broja; zadano = 0
Povratna vrijednost: Cijeli broj ekvivalentan navedenom nizu.
Iznimke: std :: invalid_argument => Ako se ne može izvršiti pretvorba.
Std :: out_of_range => Ako je pretvorena vrijednost izvan raspona raspona vrste rezultata.
Opis: Funkcija stoi () uzima niz kao argument i vraća cijelu vrijednost. Izbacit će iznimku ako je pretvorena vrijednost izvan dosega ili ako se pretvorba ne može izvršiti.
Uzmimo programski primjer da bismo bolje razumjeli ovu funkciju.
#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 << '
'; }
Izlaz:
stoji ('53') je 53
tribine (“3.142”) je 3
stoi ('31477 s char') je 31477
U gore navedenom programu koristili smo funkciju stoi s tri različita niza. Imajte na umu da tijekom pretvaranja podataka niza u cijelu vrijednost funkcija odbacuje razmake ili bilo koje druge znakove.
Stoga je u slučaju mystr2 (3.142) funkcija odbacila sve nakon decimalne točke. Slično tome, u slučaju mystr3 („31477 s char“), uzet je u obzir samo broj. Ostali sadržaji niza su odbačeni.
atoi ()
Prototip funkcije: int atoi (const char * str);
Parametar (i): str => Pokazivač na nule-završeni niz bajtova.
Povratna vrijednost:
Uspjeh => Cijela vrijednost koja odgovara argumentu str.
Neuspjeh => Nedefinirano ako je pretvorena vrijednost izvan raspona.
0 => Ako se ne može izvršiti pretvorba.
Opis: Ova funkcija pretvara niz bajtova u cijelu vrijednost. Funkcija atoi () odbacuje sve razmake dok se ne nađe znak koji nije razmak, a zatim uzima znakove jedan po jedan kako bi oblikovao važeći cjelobrojni prikaz i pretvara ga u cijeli broj.
Primjer atoi funkcije
#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 << '
'; }
Izlaz:
atoi ('24') je 24
atoi ('3.142') je 3
atoi ('23446 s char') je 23446
atoi ('riječi s 3') je 0
Kao što je prikazano u gornjem programu, funkcija atoi uzima niz bajtova kao argument i pretvara ga u cjelobrojnu vrijednost. Razmaci ili bilo koji drugi znakovi se odbacuju. Ako je pretvorena vrijednost izvan raspona, tada se vraća 0.
Niz za udvostručavanje pomoću stod ()
Prototip funkcije: stod (const std :: string & str, std :: size_t * pos = 0);
Parametar (i):
str => Niz za pretvaranje
pos => Adresa cijelog broja za pohranu broja obrađenih znakova; zadano = 0
Povratna vrijednost: Dvostruka vrijednost ekvivalentna navedenom nizu.
Iznimke:
std :: invalid_argument => Ako se ne može izvršiti pretvorba.
std :: out_of_range => Ako je pretvorena vrijednost izvan raspona raspona vrste rezultata.
Opis: Ova funkcija pretvara niz u vrijednost s pomičnom zarezom. Funkcija stod () odbacuje sve razmake dok se ne nađe znak koji nije razmak, a zatim uzima znakove jedan po jedan kako bi oblikovao valjani prikaz broja s pomičnom zarezom i pretvara ga u pokretnu zarez.
Pogledajmo primjer koji demonstrira ovu funkciju.
#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 << '
'; }
Izlaz:
stod ('24') je 24
stod ('3.142') je 3.142
stod ('23446 s char') je 23446
Gornji program prikazuje upotrebu funkcije 'stod'. Izlaz označava pretvorene dvostruke vrijednosti navedenih nizova.
Korištenje stringstream klase
Korištenje klase stringstream najjednostavniji je način pretvaranja vrijednosti niza u numeričke vrijednosti.
Potanko ćemo učiti klasu stringstream u našim sljedećim vodičima. Dolje je dan program C ++ koji prikazuje pretvorbu niza u numeričke vrijednosti.
#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< Izlaz:
Vrijednost broja: 2508
Vrijednost dNum: 3.142
U gornjem programu vidimo da smo proglasili objekt niza. Zatim deklariramo objekt stringstream-a i prosljeđujemo string ovom objektu tako da se niz pretvori u objekt stringstream-a. Tada se ovaj objekt niza struje prenosi na cjelobrojnu vrijednost pomoću operatora ‘>>’ koji pretvara objekt niza niza u cijeli broj.
Slično tome, pretvorili smo i niz u dvostruki. Dakle, sve dok operator “>>” podržava tip podataka, možemo pretvoriti niz u bilo koji tip podataka pomoću objekta stringstream.
Pretvori int u niz u C ++
Također možemo pretvoriti numeričke vrijednosti u niz vrijednosti. Postoje dvije metode pretvaranja numeričkih vrijednosti u niz vrijednosti, a mi ćemo razmotriti one u nastavku.
Upotreba funkcije to_string ()
Prototip funkcije: std :: string to_string (vrijednost tipa);
Parametar (i): value => Numerička vrijednost za pretvorbu
Povratna vrijednost: Vrijednost niza koja sadrži pretvorenu vrijednost.
Iznimka: može baciti std :: bad_alloc
Opis: Ova funkcija to_string () pretvara numeričku vrijednost prosljeđenu kao argument u vrstu niza i vraća niz.
Pogledajmo primjer ove funkcije pomoću programa 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; }
Izlaz:
Predstavljanje niza cijelog broja: 20 Prikazivanje niza float: 30.500000
Ovdje imamo dvije varijable, svaku tipa integer i float. Zatim dva puta pozivamo metodu to_string s cijelim brojem i float argumentom i pretvaramo obje vrijednosti u vrijednosti niza. Na kraju prikazujemo pretvorene vrijednosti.
Imajte na umu da pretvaranje vrijednosti s pomičnom zarezom u niz može dati neočekivane rezultate jer broj značajnih znamenki može biti nula s metodom to_string.
Korištenje stringstream klase
Koristeći klasu stringstream, stringstream prvo deklarira objekt streama koji umetne numeričku vrijednost kao tok u objekt. Zatim koristi funkciju 'str ()' za internu pretvorbu numeričke vrijednosti u niz.
Primjer:
#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; }
Izlaz:
Niz formiran od cijelog broja je: 26082019
Niz oblikovan od dvostrukog iznosi: 3.142
U ovom popisu definirali smo cijeli broj i dvostruku vrijednost. Tada imamo objekt ostringstream pomoću kojeg prikrivamo numeričku vrijednost objektu stringstream. Ovo koristi '<<’ operator. Next, we use the str() method on a stringstream object to convert it to a string.
Zaključak
U ovom smo tutorijalu raspravljali o funkcijama pretvorbe koje pretvaraju niz u numeričke tipove i numeričke tipove natrag u niz. Detaljno smo vidjeli funkcije i primjere funkcije stoi (), stod (), atoi (), to_string (). Također smo razgovarali o nekim funkcijama i metodama klase stringstream koje nam pomažu u spomenutim pretvorbama.
Preporučena literatura = >> Pretvori niz u integrirani broj na Javi i Metode za pretvaranje Int u String u Javi
U sljedećem uputstvu naučit ćemo funkcije pretvorbe za tipove podataka znakova.
=> Ovdje pogledajte temeljne vodiče za obuku za C ++.
Preporučena literatura
- Python string funkcije
- Funkcije pretvorbe znakova C ++: char u int, char u niz
- Java string sa String Buffer-om i String Builder Tutorial
- String funkcije u C ++: getline, podniz, duljina niza i još mnogo toga
- C # Pretvori niz u Int pomoću metoda raščlanjivanja, pretvaranja i isprobavanja
- VBScript funkcije niza: VBScript inStr, funkcije zamjene, sredine i obrezivanja
- Vodič za razdvajanje Python Stringa
- Vodič za C # - String metode s primjerima koda