U ovom ćete članku naučiti o funkciji std::stol u C++ s njezinom sintaksom i primjerima.
Što je std::stol()?
The Biblioteka standardnih predložaka (STL) u C++ uključuje std::stol() funkciju koja je posebno napravljena za pretvaranje nizove u duge cijele brojeve . Ova je funkcija osobito korisna pri radu s korisničkim unosom ili čitanju podataka iz vanjskih izvora - gdje se unos obično daje u formatu niza. Vraća ekvivalentni dugi cijeli broj nakon primanja niza kao ulaza. Iznimka tipa std::invalid_argument ili std::out_of_range izbacuje se ako konverzija nije moguća ili ako ulazni niz sadrži znakove koji nisu dio važećeg broja.
Sintaksa:
Ima sljedeću sintaksu:
long std::stol(const std::string& str, size_t* pos = 0, int base = 10);
str: Tekst koji treba promijeniti u dugi cijeli broj.
poz.: Indeks prvog nepretvorenog znaka niza, pohranjenog kao pokazivač na objekt size_t. Ako nije potreban, ovaj opcijski parametar može se postaviti na nullptr.
if else izjava java
baza: Brojčana baza pretvorbe. Deset je zadana postavka.
Povratna vrijednost: Numeričku vrijednost koja je raščlanjena iz ulaznog niza funkcija vraća kao dugi cijeli broj.
Iznimke: Funkcija izbacuje iznimku ako se konverzija ne može dovršiti ili ako znakovi u ulaznom nizu nisu valjani. Ako se pretvorba ne može izvršiti, moguće su iznimke std::nevažeći_argument i std::izvan_raspona ako je pretvorena vrijednost veća od raspona koji se može predstaviti dugo.
Slučajevi upotrebe:
std::stol() je koristan za pretvaranje numeričkog unosa koji je primljen od korisnika u formatu niza u numerički tip tako da se može dalje obrađivati.
Čitanje numeričkih podataka u datotekama koje sadrže nizove kao prikaz podataka.
Provjera valjanosti podataka uključuje potvrđivanje da korisnički unosi točno predstavljaju dugačke brojeve provjerom i provjerom istih.
Primjer programa 1:
Uzmimo primjer za ilustraciju upotrebe std::stol funkcija u C++.
#include #include int main() { std::string numStr = '12345'; try { long result = std::stol(numStr); std::cout << 'Converted value: ' << result << std::endl; } catch (const std::invalid_argument& e) { std::cerr << 'Invalid argument: ' << e.what() << std::endl; } catch (const std::out_of_range& e) { std::cerr << 'Out of range: ' << e.what() << std::endl; } return 0; }
Izlaz:
Obrazloženje:
- String varijabla tzv numStr se inicijalizira s vrijednošću '12345' na početku programa.
- Kod se pomiče u blok try, signalizirajući da će pokušati pokrenuti izjave sadržane u njemu. Ovdje se obrađuju potencijalni izuzeci.
- Program pokušava koristiti std::stol() transformirati niz numStr u dugi cijeli broj unutar bloka try.
- Ishod se čuva u varijabli rezultat ako je pretvorba uspješna.
- Uspješno konvertirani broj program zatim ispisuje na standardni izlaz.
- Jedan od catch blokova obrađuje sve iznimke koje se pojave tijekom pretvorbe.
- Ispisuje se poruka o pogrešci koja navodi da je argument nevažeći ako je iznimka tipa std::invalid_argument.
- Ispisuje se poruka o pogrešci koja navodi da je rezultat pretvorbe izvan važećeg raspona ako je iznimka tipa std::out_of_range.
- Program operativnom sustavu vraća 0, što označava uspješno izvršenje, a glavna funkcija završava.
Ukratko, kod pokušava koristiti std::stol() funkcija unutar bloka try za pretvaranje niza '12345' u dugi cijeli broj. Rezultat se ispisuje ako je pretvorba uspješna. Hvata iznimke i ispisuje relevantnu poruku o pogrešci u slučaju da se pojavi (bilo zbog netočnog argumenta ili zato što je rezultat izvan raspona).
Na kraju, program vraća 0, što označava uspješan završetak.
Primjer programa 2:
Uzmimo još jedan primjer za ilustraciju upotrebe std::stol funkcija u C++.
#include #include int main() { std::cout << 'Enter numeric strings to convert to long integers (type 'exit' to end): '; while (true) { std::string userInput; std::cout <> userInput; if (userInput == 'exit') { std::cout << 'Exiting program. Goodbye! '; break; } try { long result = std::stol(userInput); std::cout << 'Converted Value: ' << result << std::endl; } catch (const std::invalid_argument& e) { std::cerr << 'Error: Invalid argument in input '' << userInput << '': ' << e.what() << std::endl; } catch (const std::out_of_range& e) { std::cerr << 'Error: Out of range for input '' << userInput << '': ' << e.what() << std::endl; } } return 0; }
Izlaz:
Objašnjenje:
- U ovom primjeru od korisnika se traži da unese vrijednosti niza koje treba pretvoriti.
- Aplikacija će nastaviti prihvaćati korisnički unos sve dok korisnik ne unese 'Izlaz' pomoću while petlje.
- Ulazak 'Izlaz' uzrokuje da ovaj program ispiše oproštajnu poruku i prekine petlju.
- Ako ne, pokušava se koristiti std::stol za pretvaranje ulaza u dugi.
- Pretvorena vrijednost se ispisuje ako je pretvorba uspješna.
- Hvata iznimke (nevažeći argumenti, izvan raspona), ispisuje poruku o pogrešci i nastavlja.
- Dok čeka novi korisnički unos, petlja prelazi na sljedeću iteraciju.