V tem članku boste spoznali funkcijo std::stol v C++ z njeno sintakso in primeri.
razvrsti arraylist v javi
Kaj je std::stol()?
The Standardna knjižnica predlog (STL) v C++ vključuje std::stol() funkcijo, ki je narejena posebej za pretvorbo nizov v dolga cela števila . Ta funkcija je še posebej uporabna pri delu z uporabniškim vnosom ali branju podatkov iz zunanjih virov - kjer je vnos običajno podan v obliki niza. Po prejemu niza kot vhod vrne enakovredno dolgo celo število. Izjema tipa std::invalid_argument ali std::out_of_range se vrže, če pretvorba ni mogoča ali če vhodni niz vsebuje znake, ki niso del veljavnega števila.
Sintaksa:
Ima naslednjo sintakso:
long std::stol(const std::string& str, size_t* pos = 0, int base = 10);
str: Besedilo, ki ga je treba spremeniti v dolgo celo število.
položaj: Indeks prvega nepretvorjenega znaka niza, shranjenega kot kazalec na objekt size_t. Če ni potreben, lahko ta izbirni parameter nastavite na nullptr.
osnova: Številčna osnova pretvorbe. Deset je privzeto.
Povratna vrednost: Številsko vrednost, ki je bila razčlenjena iz vhodnega niza, funkcija vrne kot dolgo celo število.
Izjeme: Funkcija sproži izjemo, če pretvorbe ni mogoče dokončati ali če so znaki v vhodnem nizu neveljavni. Če pretvorbe ni bilo mogoče izvesti, so možne izjeme std::neveljaven_argument in std::zunaj_razpona če je pretvorjena vrednost dalj časa večja od razpona, ki ga je mogoče predstaviti.
Primeri uporabe:
std::stol() je uporaben za pretvorbo številskega vnosa, ki ga uporabniki prejmejo v nizovnem formatu, v številski tip, tako da ga je mogoče nadalje obdelati.
Branje numeričnih podatkov v datotekah, ki vsebujejo nize kot predstavitev podatkov.
Preverjanje podatkov vključuje potrditev, da uporabniški vnosi natančno predstavljajo dolga števila, tako da jih potrdimo in preverimo.
Primer programa 1:
Vzemimo primer za ponazoritev uporabe funkcija std::stol v 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; }
Izhod:
Pojasnilo:
- Poklicana spremenljivka niza numStr se inicializira z vrednostjo '12345' na začetku programa.
- Koda se premakne v poskusni blok in signalizira, da bo poskušala zagnati stavke, ki jih vsebuje. Tukaj so obravnavane morebitne izjeme.
- Program poskuša uporabiti std::stol() da spremenite niz numStr v dolgo celo število znotraj poskusnega bloka.
- Če je pretvorba uspešna, se rezultat ohrani v spremenljivki rezultat.
- Uspešno pretvorjeno število nato program natisne v standardni izhod.
- Eden od blokov catch obravnava vse izjeme, ki se pojavijo med pretvorbo.
- Če je izjema vrste std::invalid_argument, se natisne sporočilo o napaki, ki navaja, da argument ni veljaven.
- Sporočilo o napaki, ki navaja, da je rezultat pretvorbe zunaj veljavnega obsega, se natisne, če je izjema vrste std::out_of_range.
- Program operacijskemu sistemu vrne 0, kar pomeni uspešno izvedbo, in glavna funkcija se konča.
Na kratko, koda poskuša uporabiti std::stol() znotraj poskusnega bloka za pretvorbo niza '12345' v dolgo celo število. Rezultat se natisne, če je pretvorba uspešna. Zajame izjeme in natisne ustrezno sporočilo o napaki, če se pojavi (zaradi nepravilnega argumenta ali ker je rezultat izven obsega).
Nazadnje program vrne 0, kar pomeni uspešen zaključek.
Primer programa 2:
Vzemimo še en primer za ponazoritev uporabe funkcija std::stol v 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; }
Izhod:
Pojasnilo:
- V tem primeru je uporabnik pozvan, da vnese vrednosti niza, ki jih je treba pretvoriti.
- Aplikacija bo še naprej sprejemala uporabniške vnose, dokler uporabnik ne vnese 'izhod' z uporabo zanke while.
- Vstopanje 'izhod' povzroči, da ta program natisne poslovilno sporočilo in konča zanko.
- Če ne, poskuša uporabiti std::stol za pretvorbo vnosa v dolgo.
- Če je pretvorba uspešna, se pretvorjena vrednost natisne.
- Ujame izjeme (neveljavni argumenti, izven obsega), natisne sporočilo o napaki in nadaljuje.
- Ko čaka na vnos novega uporabnika, se zanka premakne na naslednjo ponovitev.