V tomto článku sa dozviete o funkcii std::stol v C++ s jej syntaxou a príkladmi.
Čo je std::stol()?
The Štandardná knižnica šablón (STL) v C++ zahŕňa std::stol() funkciu, ktorá je špeciálne vyrobená na konverziu reťazce na dlhé celé čísla . Táto funkcia je užitočná najmä pri práci s užívateľským vstupom alebo pri čítaní údajov z externých zdrojov – kde je vstup zvyčajne zadaný vo formáte reťazca. Po prijatí reťazca ako vstupu vráti ekvivalentné dlhé celé číslo. Výnimka typu std::invalid_argument alebo std::out_of_range sa vyvolá, ak konverzia nie je možná alebo ak vstupný reťazec obsahuje znaky, ktoré nie sú súčasťou platného čísla.
Syntax:
Má nasledujúcu syntax:
long std::stol(const std::string& str, size_t* pos = 0, int base = 10);
panel nástrojov rýchleho prístupu word
str: Text, ktorý je potrebné zmeniť na dlhé celé číslo.
Poz.: Index prvého nekonvertovaného znaku reťazca, uložený ako ukazovateľ na objekt size_t. Ak sa to nevyžaduje, tento voliteľný parameter možno nastaviť na hodnotu nullptr.
základňa: Číselný základ prevodu. Predvolená hodnota je desať.
štátov v USA
Návratová hodnota: Číselná hodnota, ktorá bola analyzovaná zo vstupného reťazca, je vrátená funkciou ako dlhé celé číslo.
Výnimky: Funkcia vyvolá výnimku, ak konverziu nemožno dokončiť alebo ak sú znaky vo vstupnom reťazci neplatné. Ak nie je možné vykonať žiadnu konverziu, sú možné výnimky std::invalid_argument a std::out_of_range ak je konvertovaná hodnota dlhší čas väčšia ako reprezentovateľný rozsah.
Prípady použitia:
std::stol() je užitočný na transformáciu numerického vstupu prijatého od používateľov v reťazcovom formáte na numerický typ, aby ho bolo možné ďalej spracovať.
Čítanie číselných údajov v súboroch obsahujúcich reťazce ako reprezentáciu údajov.
Validácia údajov zahŕňa potvrdenie, že používateľské vstupy presne reprezentujú dlhé čísla ich validáciou a overením.
Príklad programu 1:
Uveďme si príklad na ilustráciu použitia funkcia 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; }
Výkon:
ako získať skryté aplikácie
Vysvetlenie:
- Reťazcová premenná s názvom numStr sa inicializuje s hodnotou „12345“ na začiatku programu.
- Kód sa presunie do bloku try, čo signalizuje, že sa pokúsi spustiť príkazy obsiahnuté v ňom. Tu sa riešia možné výnimky.
- Program sa pokúša použiť std::stol() na transformáciu reťazca numStr na dlhé celé číslo v bloku try.
- Ak je konverzia úspešná, výsledok sa ponechá v premennej výsledok.
- Úspešne prevedené číslo potom program vytlačí na štandardný výstup.
- Jeden z blokov catch spracováva všetky výnimky, ktoré vzniknú počas konverzie.
- Ak je výnimka typu std::invalid_argument, vytlačí sa chybové hlásenie, že argument je neplatný.
- Ak je výnimka typu std::out_of_range, vytlačí sa chybové hlásenie, že výsledok konverzie je mimo platného rozsahu.
- Program vráti operačnému systému 0, čo znamená úspešné vykonanie, a hlavná funkcia sa ukončí.
Stručne povedané, kód sa pokúša použiť std::stol() funkcia vnútri bloku try na konverziu reťazca „12345“ na dlhé celé číslo. Ak je prevod úspešný, výsledok sa vytlačí. Zachytáva výnimky a vypíše príslušné chybové hlásenie v prípade, že sa vyskytne (buď z dôvodu nesprávneho argumentu alebo preto, že výsledok je mimo rozsahu).
Nakoniec program vráti 0, čo znamená úspešné dokončenie.
abstraktná trieda
Príklad programu 2:
Zoberme si ďalší príklad na ilustráciu použitia funkcia 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; }
Výkon:
vysvetlenie:
- V tomto príklade je používateľ vyzvaný, aby zadal hodnoty reťazca, ktoré sa majú skonvertovať.
- Aplikácia bude naďalej akceptovať vstup od používateľa, kým používateľ nezadá 'VÝCHOD' pomocou while slučky.
- Zadávanie 'VÝCHOD' spôsobí, že tento program vytlačí správu na rozlúčku a ukončí cyklus.
- Ak nie, pokúsi sa použiť std::stol na konverziu vstupu na dlhý.
- Ak je prevod úspešný, prevedená hodnota sa vytlačí.
- Zachytí výnimky (neplatné argumenty, mimo rozsahu), vypíše chybové hlásenie a pokračuje.
- Počas čakania na nový vstup používateľa sa cyklus presunie na ďalšiu iteráciu.