Tässä artikkelissa opit C++:n std::stol-funktiosta sen syntaksin ja esimerkkien kanssa.
Mikä on std::stol()?
The Standard Template Library (STL) C++:ssa sisältää std::stol() toiminto, joka on erityisesti tehty muuntamista varten merkkijonoista pitkiin kokonaislukuihin . Tämä toiminto on erityisen hyödyllinen käytettäessä käyttäjän syötteitä tai luettaessa tietoja ulkoisista lähteistä, joissa syöte annetaan yleensä merkkijonomuodossa. Se palauttaa vastaavan pitkän kokonaisluvun vastaanotettuaan syötteenä merkkijonon. Poikkeus tyypistä std::invalid_argument tai std::out_of_range heitetään, jos muuntaminen ei ole mahdollista tai jos syötemerkkijono sisältää merkkejä, jotka eivät ole osa kelvollista numeroa.
Syntaksi:
Siinä on seuraava syntaksi:
long std::stol(const std::string& str, size_t* pos = 0, int base = 10);
str: Teksti, joka on muutettava pitkäksi kokonaisluvuksi.
Pos: Merkkijonon ensimmäisen muuntamattoman merkin indeksi, joka on tallennettu osoittimena size_t-objektiin. Jos sitä ei vaadita, tämä valinnainen parametri voidaan asettaa arvoon nullptr.
pohja: Muunnoksen numeerinen kanta. Kymmenen on oletusarvo.
Palautusarvo: Syötemerkkijonosta jäsennetyn numeerisen arvon funktio palauttaa pitkänä kokonaislukuna.
Poikkeukset: Funktio tekee poikkeuksen, jos muuntamista ei voida suorittaa loppuun tai jos syötemerkkijonon merkit ovat virheellisiä. Jos muuntamista ei voida tehdä, mahdolliset poikkeukset ovat std::invalid_argument ja std::alueen_ulkopuolinen jos muunnettu arvo on suurempi kuin edustava alue pitkän ajan.
Käytä koteloita:
std::stol() on hyödyllinen muuttamaan käyttäjiltä merkkijonomuodossa vastaanotettu numeerinen syöte numeeriseksi tyypiksi, jotta sitä voidaan käsitellä edelleen.
Numeerisen datan lukeminen tiedostoista, jotka sisältävät merkkijonoja datan esityksenä.
tostring-menetelmä javassa
Tietojen validointi sisältää sen vahvistamisen, että käyttäjän syötteet edustavat tarkasti pitkiä lukuja vahvistamalla ja vahvistamalla ne.
Esimerkkiohjelma 1:
Otetaan esimerkki käytön havainnollistamiseksi std::stol-toiminto C++:ssa.
#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; }
Lähtö:
Selitys:
- Merkkijonomuuttuja nimeltä numStr alustetaan arvolla '12345' ohjelman alussa.
- Koodi siirtyy try-lohkoon, mikä osoittaa, että se yrittää suorittaa sen sisältämät käskyt. Mahdollisia poikkeuksia käsitellään täällä.
- Ohjelma yrittää käyttää std::stol() muuttaaksesi merkkijonon numStr pitkäksi kokonaisluvuksi try-lohkon sisällä.
- Tulos säilytetään muuttujan tuloksessa, jos muunnos onnistuu.
- Ohjelma tulostaa sitten onnistuneesti muunnetun numeron vakiotulosteeseen.
- Yksi kiinnityslohkoista käsittelee kaikki muunnoksen aikana ilmenevät poikkeukset.
- Jos poikkeus on tyyppiä std::invalid_argument, tulostetaan virhesanoma, jonka mukaan argumentti on virheellinen.
- Tulostetaan virhesanoma, jonka mukaan muunnostulos on kelvollisen alueen ulkopuolella, jos poikkeus on tyyppiä std::alueen_ulos.
- Ohjelma palauttaa käyttöjärjestelmälle arvon 0, mikä tarkoittaa onnistunutta suoritusta, ja päätoiminto päättyy.
Lyhyesti sanottuna koodi yrittää käyttää std::stol() toiminto try-lohkon sisällä muuntaaksesi merkkijonon '12345' pitkäksi kokonaisluvuksi. Tulos tulostetaan, jos muunnos onnistuu. Se kaappaa poikkeukset ja tulostaa asiaankuuluvan virheilmoituksen, jos sellainen ilmenee (joko väärän argumentin vuoksi tai koska tulos on alueen ulkopuolella).
Lopuksi ohjelma palauttaa 0:n, mikä tarkoittaa onnistunutta suorittamista.
Esimerkkiohjelma 2:
Otetaan toinen esimerkki havainnollistamaan käyttöä std::stol-toiminto C++:ssa.
#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; }
Lähtö:
Selitys :
- Tässä esimerkissä käyttäjää pyydetään syöttämään muunnettavat merkkijonoarvot.
- Sovellus hyväksyy käyttäjän syötteitä, kunnes käyttäjä syöttää 'poistu' käyttämällä while-silmukkaa.
- Sisääntulo 'poistu' saa tämän ohjelman tulostamaan jäähyväisviestin ja lopettamaan silmukan.
- Jos ei, se yrittää käyttää std::stol muuntaaksesi syötteen pitkäksi.
- Muunnettu arvo tulostetaan, jos muunnos onnistuu.
- Se havaitsee poikkeukset (virheelliset argumentit, alueen ulkopuolella), tulostaa virheilmoituksen ja jatkaa.
- Odottaessaan uutta käyttäjän syötettä silmukka siirtyy seuraavaan iteraatioon.