logo

std::stol funkcija u C++

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:

    Obrada unosa od strane korisnika:

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.

    Ulazno/izlazna datoteka:

Čitanje numeričkih podataka u datotekama koje sadrže nizove kao prikaz podataka.

    Provjera valjanosti 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:

std::stol funkcija u C++

Obrazloženje:

    Inicijalizacija:
    • String varijabla tzv numStr se inicijalizira s vrijednošću '12345' na početku programa.
    Pokušajte blokirati:
    • 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.
    Pokušaj pretvorbe:
    • Program pokušava koristiti std::stol() transformirati niz numStr u dugi cijeli broj unutar bloka try.
    Učinkovita pretvorba:
    • Ishod se čuva u varijabli rezultat ako je pretvorba uspješna.
    Izlazna pretvorena vrijednost:
    • Uspješno konvertirani broj program zatim ispisuje na standardni izlaz.
    Tretiranje iznimaka:
    • Jedan od catch blokova obrađuje sve iznimke koje se pojave tijekom pretvorbe.
    Iznimka za hvatanje nevažećih argumenata:
    • Ispisuje se poruka o pogrešci koja navodi da je argument nevažeći ako je iznimka tipa std::invalid_argument.
    Iznimka za ulov izvan dometa:
    • 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.
    Politika povrata:
    • 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:

std::stol funkcija u C++

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.
  • Std::cin koristi se unutar petlje za čitanje korisničkog unosa.
  • 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.