En aquest article, coneixeràs la funció std::stol en C++ amb la seva sintaxi i exemples.
Què és std::stol()?
El Biblioteca de plantilles estàndard (STL) en C++ inclou el std::stol() funció, que està feta específicament per convertir cadenes a nombres enters llargs . Aquesta funció és especialment útil quan es treballa amb l'entrada de l'usuari o quan es llegeix dades de fonts externes, on l'entrada normalment es dóna en format de cadena. Retorna l'enter llarg equivalent després de rebre una cadena com a entrada. Es genera una excepció del tipus std::argument_invàlid o std::out_of_range si la conversió no és possible o si la cadena d'entrada conté caràcters que no formen part d'un nombre vàlid.
Sintaxi:
Té la sintaxi següent:
long std::stol (const std::string& str, size_t* pos = 0, int base = 10);
str: El text que s'ha de canviar a un nombre enter llarg.
Pos.: L'índex del primer caràcter no convertit de la cadena, emmagatzemat com a punter a un objecte size_t. Si no és necessari, aquest paràmetre opcional es pot establir en nullptr.
base: Base numèrica de la conversió. Deu és el valor predeterminat.
Valor de retorn: La funció retorna el valor numèric que s'ha analitzat des de la cadena d'entrada com un nombre enter llarg.
Excepcions: La funció llança una excepció si la conversió no es pot completar o si els caràcters de la cadena d'entrada no són vàlids. Si no es pot fer cap conversió, les possibles excepcions són std::argument_invàlid i std::fora_de_interval si el valor convertit és més gran que l'interval representable durant un llarg.
Casos d'ús:
std::stol() és útil per transformar l'entrada numèrica que es rep dels usuaris en format de cadena en un tipus numèric perquè es pugui processar més endavant.
Lectura de dades numèriques en fitxers que contenen cadenes com a representació de les dades.
cicle de vida del desenvolupament de programari
La validació de dades implica confirmar que les entrades de l'usuari representen amb precisió nombres llargs mitjançant la validació i verificació d'ells.
Exemple de programa 1:
Prenguem un exemple per il·lustrar l'ús de funció std::stol en 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; }
Sortida:
Explicació:
- Es diu una variable de cadena numStr s'inicialitza amb el valor '12345' al començament del programa.
- El codi es mou a un bloc try, indicant que intentarà executar les declaracions contingudes dins. Les possibles excepcions es tracten aquí.
- El programa intenta utilitzar-lo std::stol() per transformar la cadena numStr en un nombre enter llarg dins del bloc try.
- El resultat es manté a la variable resultat si la conversió té èxit.
- El número convertit correctament s'imprimeix a la sortida estàndard pel programa.
- Un dels blocs catch gestiona les excepcions que es produeixin durant la conversió.
- S'imprimeix un missatge d'error que indica que l'argument no és vàlid si l'excepció és del tipus std::invalid_argument.
- S'imprimeix un missatge d'error que indica que el resultat de la conversió està fora de l'interval vàlid si l'excepció és del tipus std::out_of_range.
- El programa retorna 0 al sistema operatiu, que significa una execució correcta, i la funció principal finalitza.
En resum, el codi intenta utilitzar el std::stol() funció dins d'un bloc try per convertir la cadena '12345' en un nombre enter llarg. El resultat s'imprimeix si la conversió té èxit. Captura excepcions i imprimeix el missatge d'error rellevant en cas que sorgeixi (ja sigui per un argument incorrecte o perquè el resultat està fora de l'interval).
Finalment, el programa retorna 0, que significa que s'ha completat correctament.
Exemple de programa 2:
Prenguem un altre exemple per il·lustrar l'ús de funció std::stol en 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; }
Sortida:
Explicació:
- En aquest exemple, es demana a l'usuari que introdueixi valors de cadena per convertir.
- L'aplicació continuarà acceptant l'entrada de l'usuari fins que l'usuari introdueixi 'sortir' utilitzant un bucle while.
- Entrant 'sortir' fa que aquest programa imprimeixi un missatge de comiat i finalitzi el bucle.
- Si no, s'intenta utilitzar std::stol per convertir l'entrada a llarg.
- El valor convertit s'imprimeix si la conversió té èxit.
- Capta excepcions (arguments no vàlids, fora de rang), imprimeix un missatge d'error i continua.
- Mentre espera la nova entrada de l'usuari, el bucle passa a la següent iteració.