logo

Funzione std::stol in C++

In questo articolo imparerai la funzione std::stol in C++ con la sua sintassi ed esempi.

Cos'è std::stol()?

IL Libreria di modelli standard (STL) in C++ include il std::stol() funzione specificatamente realizzata per la conversione stringhe a numeri interi lunghi . Questa funzione è particolarmente utile quando si lavora con l'input dell'utente o si leggono dati da fonti esterne, dove l'input viene solitamente fornito in formato stringa. Restituisce l'intero lungo equivalente dopo aver ricevuto una stringa come input. Se la conversione non è possibile o se la stringa di input contiene caratteri che non fanno parte di un numero valido, viene generata un'eccezione di tipo std::invalid_argument o std::out_of_range.

Sintassi:

Ha la seguente sintassi:

long std::stol(const std::string& str, size_t* pos = 0, int base = 10);

stringa: Il testo che deve essere modificato in un numero intero lungo.

Posizione: L'indice del primo carattere non convertito della stringa, archiviato come puntatore a un oggetto size_t. Se non è richiesto, questo parametro facoltativo può essere impostato su nullptr.

base: La base numerica della conversione. Dieci è l'impostazione predefinita.

modelli di progettazione in Java

Valore di ritorno: Il valore numerico analizzato dalla stringa di input viene restituito dalla funzione come intero lungo.

Eccezioni: La funzione genera un'eccezione se la conversione non può essere completata o se i caratteri nella stringa di input non sono validi. Se non è possibile eseguire alcuna conversione, le possibili eccezioni lo sono std::argomento_invalido E std::fuori_intervallo se il valore convertito è maggiore dell'intervallo rappresentabile per un periodo lungo.

Casi d'uso:

    Elaborazione degli input da parte degli utenti:

std::stol() è utile per trasformare l'input numerico ricevuto dagli utenti in formato stringa in un tipo numerico in modo che possa essere ulteriormente elaborato.

    File di ingresso/uscita:

Lettura di dati numerici in file contenenti stringhe come rappresentazione dei dati.

    Convalida dei dati:

La convalida dei dati implica la conferma che gli input dell'utente rappresentano accuratamente i numeri lunghi convalidandoli e verificandoli.

Programma di esempio 1:

Facciamo un esempio per illustrare l'uso di std::stol funzione nel 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; } 

Produzione:

Funzione std::stol in C++

Spiegazione:

    Inizializzazione:
    • Una variabile stringa chiamata numStr viene inizializzato con il valore '12345' all'inizio del programma.
    Prova a bloccare:
    • Il codice si sposta in un blocco try, segnalando che tenterà di eseguire le istruzioni contenute all'interno. Le potenziali eccezioni vengono trattate qui.
    Tentativo di conversione:
    • Il programma tenta di utilizzare std::stol() per trasformare la stringa numStr in un intero lungo all'interno del blocco try.
    Conversione effettiva:
    • Il risultato viene mantenuto nella variabile result se la conversione ha esito positivo.
    Valore convertito in uscita:
    • Il numero convertito con successo viene quindi stampato sullo standard output dal programma.
    Trattamento delle eccezioni:
    • Uno dei blocchi catch gestisce eventuali eccezioni che si verificano durante la conversione.
    Eccezione per il rilevamento di argomenti non validi:
    • Se l'eccezione è di tipo std::invalid_argument viene stampato un messaggio di errore che indica che l'argomento non è valido.
    Eccezione per cattura fuori portata:
    • Se l'eccezione è di tipo std::out_of_range viene stampato un messaggio di errore che indica che il risultato della conversione non è compreso nell'intervallo valido.
    Politica di ritorno:
    • Il programma restituisce 0 al sistema operativo, indicando l'esecuzione riuscita, e la funzione principale termina.

In breve, il codice tenta di utilizzare il file std::stol() funzione all'interno di un blocco try per convertire la stringa '12345' in un intero lungo. Il risultato viene stampato se la conversione ha esito positivo. Cattura le eccezioni e stampa il relativo messaggio di errore nel caso in cui se ne verifichi uno (a causa di un argomento errato o perché il risultato non rientra nell'intervallo).

Infine, il programma restituisce 0, a indicare il completamento riuscito.

Programma di esempio 2:

Facciamo un altro esempio per illustrare l'uso di std::stol funzione nel 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; } 

Produzione:

cpp è uguale
Funzione std::stol in C++

Spiegazione :

  • In questo esempio, all'utente viene richiesto di immettere valori stringa da convertire.
  • L'applicazione continuerà ad accettare l'input dell'utente finché l'utente non immette 'Uscita' utilizzando un ciclo while.
  • Std::cin viene utilizzato all'interno del ciclo per leggere l'input dell'utente.
  • Entrando 'Uscita' fa sì che questo programma stampi un messaggio di addio e termini il ciclo.
  • In caso contrario, tenta di utilizzare std::stol per convertire l'input in un long.
  • Il valore convertito viene stampato se la conversione ha esito positivo.
  • Rileva le eccezioni (argomenti non validi, fuori intervallo), stampa un messaggio di errore e continua.
  • Mentre attende l'input del nuovo utente, il ciclo passa all'iterazione successiva.