logo

Funció std::stol en C++

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:

    Processament d'entrada per part dels usuaris:

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.

    Fitxer d'entrada/sortida:

Lectura de dades numèriques en fitxers que contenen cadenes com a representació de les dades.

cicle de vida del desenvolupament de programari
    Validació de dades:

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:

Funció std::stol en C++

Explicació:

    Inicialització:
    • Es diu una variable de cadena numStr s'inicialitza amb el valor '12345' al començament del programa.
    Prova el bloc:
    • El codi es mou a un bloc try, indicant que intentarà executar les declaracions contingudes dins. Les possibles excepcions es tracten aquí.
    Intent de conversió:
    • El programa intenta utilitzar-lo std::stol() per transformar la cadena numStr en un nombre enter llarg dins del bloc try.
    Conversió efectiva:
    • El resultat es manté a la variable resultat si la conversió té èxit.
    Valor convertit de sortida:
    • El número convertit correctament s'imprimeix a la sortida estàndard pel programa.
    Tractament d'excepcions:
    • Un dels blocs catch gestiona les excepcions que es produeixin durant la conversió.
    Excepció per capturar un argument no vàlid:
    • S'imprimeix un missatge d'error que indica que l'argument no és vàlid si l'excepció és del tipus std::invalid_argument.
    Excepció per captura fora de l'abast:
    • 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.
    Política de devolució:
    • 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:

Funció std::stol en C++

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.
  • Std::cin s'utilitza dins del bucle per llegir l'entrada de l'usuari.
  • 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ó.