Šajā rakstā jūs uzzināsit par funkciju std::stol C++ ar tās sintaksi un piemēriem.
Kas ir std::stol()?
The Standarta veidņu bibliotēka (STL) valodā C++ ietver std::stol() funkcija, kas ir īpaši paredzēta konvertēšanai virknes līdz gariem veseliem skaitļiem . Šī funkcija ir īpaši noderīga, strādājot ar lietotāja ievadi vai lasot datus no ārējiem avotiem, kur ievade parasti tiek sniegta virknes formātā. Pēc virknes saņemšanas kā ievades tas atgriež līdzvērtīgu garo veselo skaitli. Tipa std::invalid_argument vai std::out_of_range izņēmums tiek izmests, ja konvertēšana nav iespējama vai ja ievades virknē ir rakstzīmes, kas nav derīga skaitļa daļa.
Sintakse:
Tam ir šāda sintakse:
long std::stol(const std::string& str, size_t* poz = 0, int base = 10);
str: Teksts, kas jāmaina uz garu veselu skaitli.
Poz.: Virknes pirmās nekonvertētās rakstzīmes rādītājs, kas tiek saglabāts kā rādītājs uz objektu size_t. Ja tas nav nepieciešams, šo izvēles parametru var iestatīt uz nullptr.
bāze: Konversijas skaitliskā bāze. Desmit ir noklusējuma vērtība.
Atgriešanas vērtība: Skaitlisko vērtību, kas tika parsēta no ievades virknes, funkcija atgriež kā garu veselu skaitli.
Izņēmumi: Funkcija rada izņēmumu, ja konvertēšanu nevar pabeigt vai ja ievades virknes rakstzīmes nav derīgas. Ja konvertēšanu nevar veikt, iespējamie izņēmumi ir std::invalid_argument un std::out_of_range ja konvertētā vērtība ilgu laiku ir lielāka par attēlojamo diapazonu.
Lietošanas gadījumi:
std::stol() ir noderīga, lai pārveidotu ciparu ievadi, kas tiek saņemta no lietotājiem virknes formātā, ciparu formātā, lai to varētu tālāk apstrādāt.
Skaitlisku datu lasīšana failos, kas satur virknes kā datu attēlojumu.
Datu validācija ietver apstiprinājumu, ka lietotāja ievadītie dati precīzi atspoguļo garus skaitļus, tos apstiprinot un pārbaudot.
1. programmas piemērs:
Ņemsim piemēru, lai ilustrētu lietošanu std::stol funkcija valodā 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; }
Izvade:
Paskaidrojums:
- Virknes mainīgais, ko sauc numStr programmas sākumā tiek inicializēta ar vērtību '12345'.
- Kods tiek pārvietots uz izmēģinājuma bloku, norādot, ka tas mēģinās izpildīt tajā ietvertos paziņojumus. Šeit ir apskatīti iespējamie izņēmumi.
- Programma mēģina izmantot std::stol() lai pārveidotu virkni numStr par garu veselu skaitli try blokā.
- Ja reklāmguvums ir veiksmīgs, rezultāts tiek saglabāts mainīgajā rezultātā.
- Pēc tam programma veiksmīgi konvertēto skaitli izdrukā standarta izvadē.
- Viens no uztveršanas blokiem apstrādā visus izņēmumus, kas rodas konvertēšanas laikā.
- Kļūdas ziņojums, kas norāda, ka arguments ir nederīgs, tiek izdrukāts, ja izņēmuma tips ir std::invalid_argument.
- Ja izņēmuma veids ir std::ārpus_diapazona, tiek izdrukāts kļūdas ziņojums, kas norāda, ka konversijas rezultāts ir ārpus derīgā diapazona.
- Programma atgriež 0 operētājsistēmai, kas nozīmē veiksmīgu izpildi, un galvenā funkcija beidzas.
Īsāk sakot, kods mēģina izmantot std::stol() funkcija try blokā, lai pārvērstu virkni “12345” par garu veselu skaitli. Rezultāts tiek izdrukāts, ja konvertēšana ir veiksmīga. Tas tver izņēmumus un izdrukā attiecīgo kļūdas ziņojumu, ja tāds rodas (nepareiza argumenta dēļ vai tāpēc, ka rezultāts ir ārpus diapazona).
pandu sērijas iezīmes
Visbeidzot, programma atgriež 0, kas norāda uz veiksmīgu pabeigšanu.
2. programmas piemērs:
Ņemsim vēl vienu piemēru, lai ilustrētu lietošanu std::stol funkcija valodā 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; }
Izvade:
Paskaidrojums:
- Šajā piemērā lietotājam tiek piedāvāts ievadīt konvertējamās virknes vērtības.
- Lietojumprogramma turpinās pieņemt lietotāja ievadi, līdz lietotājs to ievadīs 'Izeja' izmantojot kamēr cilpu.
- Ienākšana 'Izeja' liek šai programmai izdrukāt atvadu ziņojumu un beigt cilpu.
- Ja nē, tas mēģina izmantot std::stol lai pārvērstu ievadi garā.
- Konvertētā vērtība tiek izdrukāta, ja konvertēšana ir veiksmīga.
- Tas uztver izņēmumus (nederīgus argumentus, ārpus diapazona), izdrukā kļūdas ziņojumu un turpina.
- Gaidot jaunu lietotāja ievadi, cilpa pāriet uz nākamo iterāciju.