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:
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.
Numerikus adatok olvasása olyan fájlokban, amelyek karakterláncokat tartalmaznak az adatok reprezentációjaként.
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:
Magyarázat:
- Az úgynevezett karakterlánc változó számStr '12345' értékkel inicializálódik a program elején.
- 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.
- 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.
- Az eredmény a változó eredményben marad, ha a konverzió sikeres.
- A sikeresen konvertált számot ezután a program a szabványos kimenetre nyomtatja.
- Az egyik fogási blokk kezeli az átalakítás során felmerülő kivételeket.
- Ha a kivétel std::invalid_argument típusú, akkor a rendszer egy hibaüzenetet nyomtat, amely szerint az argumentum érvénytelen.
- 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.
- 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:
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.
- 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.