V tomto článku se dozvíte o funkci std::stol v C++ s její syntaxí a příklady.
Co je std::stol()?
The Standardní knihovna šablon (STL) v C++ zahrnuje std::stol() funkce, která je speciálně vytvořena pro konverzi řetězce na dlouhá celá čísla . Tato funkce je užitečná zejména při práci s uživatelským vstupem nebo při čtení dat z externích zdrojů – kde je vstup obvykle zadán ve formátu řetězce. Po přijetí řetězce jako vstupu vrátí ekvivalentní dlouhé celé číslo. Výjimka typu std::invalid_argument nebo std::out_of_range je vyvolána, pokud převod není možný nebo pokud vstupní řetězec obsahuje znaky, které nejsou součástí platného čísla.
síťový operační systém
Syntax:
Má následující syntaxi:
long std::stol(const std::string& str, size_t* pos = 0, int base = 10);
str: Text, který je třeba změnit na dlouhé celé číslo.
pozice: Index prvního nepřevedeného znaku řetězce, uložený jako ukazatel na objekt size_t. Pokud to není vyžadováno, lze tento volitelný parametr nastavit na hodnotu nullptr.
základna: Číselný základ převodu. Výchozí hodnota je deset.
Návratová hodnota: Číselná hodnota, která byla analyzována ze vstupního řetězce, je vrácena funkcí jako dlouhé celé číslo.
Výjimky: Funkce vyvolá výjimku, pokud převod nelze dokončit nebo pokud jsou znaky ve vstupním řetězci neplatné. Pokud nelze provést konverzi, jsou možné výjimky std::invalid_argument a std::out_of_range pokud je převedená hodnota delší než reprezentovatelný rozsah.
Případy užití:
std::stol() je užitečný pro transformaci numerického vstupu přijatého od uživatelů ve formátu řetězce na numerický typ, aby jej bylo možné dále zpracovávat.
Čtení číselných dat v souborech obsahujících řetězce jako reprezentaci dat.
if else příkazy java
Validace dat zahrnuje potvrzení, že uživatelské vstupy přesně reprezentují dlouhá čísla jejich validací a ověřením.
Příklad programu 1:
Vezměme si příklad pro ilustraci použití funkce 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ýstup:
ostrý úhel
Vysvětlení:
- Řetězcová proměnná se nazývá numStr je inicializována hodnotou '12345' na začátku programu.
- Kód se přesune do bloku try, což signalizuje, že se pokusí spustit příkazy obsažené v něm. Zde jsou řešeny možné výjimky.
- Program se pokusí použít std::stol() transformovat řetězec numStr na dlouhé celé číslo uvnitř bloku try.
- Pokud je konverze úspěšná, výsledek je zachován v proměnné výsledek.
- Úspěšně převedené číslo pak program vytiskne na standardní výstup.
- Jeden z bloků catch zpracovává všechny výjimky, které vzniknou během převodu.
- Pokud je výjimka typu std::invalid_argument, vytiskne se chybová zpráva oznamující, že argument je neplatný.
- Pokud je výjimka typu std::out_of_range, vytiskne se chybová zpráva oznamující, že výsledek převodu je mimo platný rozsah.
- Program vrátí operačnímu systému 0, což znamená úspěšné provedení, a hlavní funkce skončí.
Stručně řečeno, kód se snaží použít std::stol() funkce uvnitř bloku try pro převod řetězce '12345' na dlouhé celé číslo. Výsledek se vytiskne, pokud je převod úspěšný. Zachycuje výjimky a vypisuje příslušné chybové hlášení v případě, že k nějaké dojde (buď kvůli nesprávnému argumentu nebo protože výsledek je mimo rozsah).
Nakonec program vrátí 0, což znamená úspěšné dokončení.
Příklad programu 2:
Vezměme si další příklad pro ilustraci použití funkce 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ýstup:
Vysvětlení :
- V tomto příkladu je uživatel vyzván k zadání hodnot řetězce, které mají být převedeny.
- Aplikace bude přijímat uživatelské vstupy, dokud uživatel nezadá 'výstup' pomocí while smyčky.
- Zadání 'výstup' způsobí, že tento program vytiskne zprávu na rozloučenou a ukončí smyčku.
- Pokud ne, pokusí se použít std::stol převést vstup na dlouhý.
- Převedená hodnota se vytiskne, pokud je převod úspěšný.
- Zachytí výjimky (neplatné argumenty, mimo rozsah), vypíše chybovou zprávu a pokračuje.
- Jak čeká na nový uživatelský vstup, smyčka se přesune k další iteraci.