logo

std::stol függvény C++-ban

Ebben a cikkben megismerheti a C++ std::stol függvényét, annak szintaxisával és példáival.

Mi az std::stol()?

A Szabványos sablonkönyvtár (STL) a C++ nyelvben tartalmazza a std::stol() funkció, amely kifejezetten konvertálásra készült karakterláncokat hosszú egész számokká . Ez a funkció különösen akkor hasznos, ha felhasználói bevitellel dolgozik vagy külső forrásból olvas adatokat – ahol a bemenetet általában karakterlánc formátumban adják meg. Az egyenértékű hosszú egész számot adja vissza, miután bemenetként kapott egy karakterláncot. Az std::invalid_argument vagy std::out_of_range típusú kivételt a rendszer dobja, ha az átalakítás nem lehetséges, vagy ha a bemeneti karakterlánc olyan karaktereket tartalmaz, amelyek nem részei egy érvényes számnak.

Szintaxis:

A következő szintaxissal rendelkezik:

long std::stol(const std::string& str, size_t* poz = 0, int base = 10);

str: A szöveg, amelyet hosszú egész számra kell módosítani.

Pozíció: A karakterlánc első konvertálatlan karakterének indexe, amely egy size_t objektum mutatójaként van tárolva. Ha nem szükséges, ez az opcionális paraméter nullptr értékre állítható.

bázis: Az átalakítás numerikus alapja. A tíz az alapértelmezett.

Visszatérési érték: A bemeneti karakterláncból elemzett numerikus értéket a függvény hosszú egész számként adja vissza.

Kivételek: A függvény kivételt dob, ha az átalakítást nem lehet befejezni, vagy ha a bemeneti karakterlánc karakterei érvénytelenek. Ha az átalakítás nem hajtható végre, a lehetséges kivételek std::invalid_argument és std::tartományon kívül ha az átváltott érték hosszabb ideig nagyobb, mint a reprezentálható tartomány.

Használati esetek:

    Beviteli feldolgozás a felhasználók által:

std::stol() hasznos a felhasználóktól karakterlánc formátumban kapott numerikus bemenet numerikus típussá alakításához, hogy tovább lehessen feldolgozni.

    Bemeneti/kimeneti fájl:

Numerikus adatok olvasása olyan fájlokban, amelyek karakterláncokat tartalmaznak az adatok reprezentációjaként.

    Adatellenőrzés:

Az adatok ellenőrzése magában foglalja annak megerősítését, hogy a felhasználói bemenetek pontosan reprezentálják a hosszú számokat, azok érvényesítésével és ellenőrzésével.

1. példaprogram:

Vegyünk egy példát a használat illusztrálására std::stol függvény C++ nyelven.

 #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; } 

Kimenet:

std::stol függvény C++-ban

Magyarázat:

    Inializálás:
    • Az úgynevezett karakterlánc változó számStr '12345' értékkel inicializálódik a program elején.
    Próbáld ki a blokkolást:
    • A kód egy try blokkba kerül, jelezve, hogy megpróbálja futtatni a benne foglalt utasításokat. A lehetséges kivételekkel itt foglalkozunk.
    Konverziós kísérlet:
    • A program megpróbálja használni std::stol() hogy a numStr karakterláncot hosszú egész számmá alakítsa a try blokkon belül.
    Hatékony átalakítás:
    • Az eredmény a változó eredményben marad, ha a konverzió sikeres.
    Kimeneti konvertált érték:
    • A sikeresen konvertált számot ezután a program a szabványos kimenetre nyomtatja.
    Kivételek kezelése:
    • Az egyik fogási blokk kezeli az átalakítás során felmerülő kivételeket.
    Kivétel az érvénytelen érv megragadása alól:
    • Ha a kivétel std::invalid_argument típusú, akkor a rendszer egy hibaüzenetet nyomtat, amely szerint az argumentum érvénytelen.
    A hatótávolságon kívüli fogás kivétele:
    • Ha a kivétel típusa std::out_of_range, hibaüzenet jelenik meg, amely szerint az átalakítás eredménye kívül esik az érvényes tartományon.
    Visszaküldési szabályzat:
    • A program 0-t ad vissza az operációs rendszernek, jelezve a sikeres végrehajtást, és a fő funkció véget ér.

Röviden, a kód megpróbálja használni a std::stol() függvény egy try blokkon belül, hogy az '12345' karakterláncot hosszú egész számmá konvertálja. Az eredményt a rendszer kinyomtatja, ha az átalakítás sikeres. Rögzíti a kivételeket, és kinyomtatja a vonatkozó hibaüzenetet, ha előfordulna (akár hibás argumentum miatt, akár azért, mert az eredmény a tartományon kívül esik).

Végül a program 0-t ad vissza, ami a sikeres befejezést jelzi.

2. példaprogram:

Vegyünk egy másik példát a használat illusztrálására std::stol függvény C++ nyelven.

 #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; } 

Kimenet:

std::stol függvény C++-ban

Magyarázat:

  • Ebben a példában a felhasználónak meg kell adnia a konvertálandó karakterlánc-értékeket.
  • Az alkalmazás mindaddig elfogadja a felhasználói bevitelt, amíg a felhasználó be nem adja 'kijárat' egy while ciklus használatával.
  • Std::cin a cikluson belül a felhasználói bevitel olvasására szolgál.
  • Belépés 'kijárat' Ez a program búcsúüzenetet nyomtat, és befejezi a ciklust.
  • Ha nem, akkor megpróbálja használni std::stol hogy a bemenetet hosszúvá alakítsa.
  • A konvertált érték kinyomtatásra kerül, ha az átalakítás sikeres.
  • Elkapja a kivételeket (érvénytelen argumentumok, tartományon kívül), hibaüzenetet nyomtat, és folytatja.
  • Miközben új felhasználói bevitelre vár, a ciklus a következő iterációra lép.