I denne artikkelen vil du lære om std::stol-funksjonen i C++ med dens syntaks og eksempler.
Hva er std::stol()?
De Standard malbibliotek (STL) i C++ inkluderer std::stol() funksjon, som er spesielt laget for konvertering strenger til lange heltall . Denne funksjonen er spesielt nyttig når du arbeider med brukerinndata eller lesing av data fra eksterne kilder - der input vanligvis er gitt i strengformat. Den returnerer det tilsvarende lange heltall etter å ha mottatt en streng som input. Et unntak av typen std::invalid_argument eller std::out_of_range blir kastet hvis konverteringen ikke er mulig eller hvis inndatastrengen inneholder tegn som ikke er en del av et gyldig tall.
Syntaks:
Den har følgende syntaks:
long std::stol(const std::string& str, size_t* pos = 0, int base = 10);
str: Teksten som må endres til et langt heltall.
Posisjon: Indeksen til strengens første ukonverterte tegn, lagret som en peker til et size_t-objekt. Hvis det ikke er nødvendig, kan denne valgfrie parameteren settes til nullptr.
utgangspunkt: Konverteringens numeriske base. Ti er standard.
eksempel på json-format
Returverdi: Den numeriske verdien som ble analysert fra inndatastrengen, returneres av funksjonen som et langt heltall.
Unntak: Funksjonen gir et unntak hvis konverteringen ikke kan fullføres eller hvis tegnene i inndatastrengen er ugyldige. Hvis ingen konvertering kan gjøres, er de mulige unntakene std::ugyldig_argument og std::out_of_range hvis den konverterte verdien er større enn det representerbare området for en lang.
Brukstilfeller:
std::stol() er nyttig for å transformere numeriske inndata som mottas fra brukere i strengformat til en numerisk type slik at den kan behandles videre.
Lese numeriske data i filer som inneholder strenger som dataenes representasjon.
Datavalidering innebærer å bekrefte at brukerinndata nøyaktig representerer lange tall ved å validere og verifisere dem.
Eksempel program 1:
La oss ta et eksempel for å illustrere bruken av std::stol funksjon i 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; }
Produksjon:
Forklaring:
- En strengvariabel kalt numStr initialiseres med verdien '12345' i begynnelsen av programmet.
- Koden flyttes inn i en prøveblokk, og signaliserer at den vil prøve å kjøre setningene i. Potensielle unntak behandles her.
- Programmet prøver å bruke std::stol() for å transformere strengen numStr til et langt heltall inne i try-blokken.
- Utfallet beholdes i variabelresultatet hvis konverteringen er vellykket.
- Det vellykket konverterte tallet skrives deretter ut til standardutdata av programmet.
- En av fangstblokkene håndterer eventuelle unntak som oppstår under konverteringen.
- En feilmelding om at argumentet er ugyldig skrives ut hvis unntaket er av typen std::invalid_argument.
- En feilmelding om at konverteringsresultatet er utenfor det gyldige området skrives ut hvis unntaket er av typen std::out_of_range.
- Programmet returnerer 0 til operativsystemet, noe som betyr vellykket kjøring, og hovedfunksjonen avsluttes.
Kort fortalt prøver koden å bruke std::stol() funksjon inne i en prøveblokk for å konvertere strengen '12345' til et langt heltall. Resultatet skrives ut hvis konverteringen er vellykket. Den fanger opp unntak og skriver ut den relevante feilmeldingen i tilfelle en oppstår (enten på grunn av et feil argument eller fordi resultatet er utenfor rekkevidde).
Til slutt returnerer programmet 0, noe som betyr vellykket fullføring.
Eksempel program 2:
La oss ta et annet eksempel for å illustrere bruken av std::stol funksjon i 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; }
Produksjon:
git pull syntaks
Forklaring:
- I dette eksemplet blir brukeren bedt om å angi strengverdier som skal konverteres.
- Applikasjonen vil fortsette å godta brukerinndata til brukeren legger inn 'exit' ved hjelp av en while-løkke.
- Går inn 'exit' får dette programmet til å skrive ut en avskjedsmelding og avslutte loopen.
- Hvis ikke, prøver den å bruke std::stol for å konvertere inngangen til en lang.
- Den konverterte verdien skrives ut hvis konverteringen er vellykket.
- Den fanger opp unntak (ugyldige argumenter, utenfor rekkevidde), skriver ut en feilmelding og fortsetter.
- Mens den venter på ny brukerinndata, går loopen videre til neste iterasjon.