logo

funkce std::stol v C++

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í:

    Zpracování vstupu uživateli:

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.

    Vstupní/výstupní soubor:

Čtení číselných dat v souborech obsahujících řetězce jako reprezentaci dat.

if else příkazy java
    Ověření dat:

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
funkce std::stol v C++

Vysvětlení:

    inicializace:
    • Řetězcová proměnná se nazývá numStr je inicializována hodnotou '12345' na začátku programu.
    Zkuste blokovat:
    • 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.
    Pokus o konverzi:
    • Program se pokusí použít std::stol() transformovat řetězec numStr na dlouhé celé číslo uvnitř bloku try.
    Efektivní konverze:
    • Pokud je konverze úspěšná, výsledek je zachován v proměnné výsledek.
    Výstupní převedená hodnota:
    • Úspěšně převedené číslo pak program vytiskne na standardní výstup.
    Ošetření výjimek:
    • Jeden z bloků catch zpracovává všechny výjimky, které vzniknou během převodu.
    Výjimka pro zachycení neplatného argumentu:
    • Pokud je výjimka typu std::invalid_argument, vytiskne se chybová zpráva oznamující, že argument je neplatný.
    Výjimka pro úlovek mimo rozsah:
    • 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.
    Reklamační řád:
    • 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:

funkce std::stol v C++

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.
  • Std::cin se používá uvnitř smyčky ke čtení uživatelského vstupu.
  • 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.