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:
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.
Lettura di dati numerici in file contenenti stringhe come rappresentazione 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:
Spiegazione:
- Una variabile stringa chiamata numStr viene inizializzato con il valore '12345' all'inizio del programma.
- Il codice si sposta in un blocco try, segnalando che tenterà di eseguire le istruzioni contenute all'interno. Le potenziali eccezioni vengono trattate qui.
- Il programma tenta di utilizzare std::stol() per trasformare la stringa numStr in un intero lungo all'interno del blocco try.
- Il risultato viene mantenuto nella variabile result se la conversione ha esito positivo.
- Il numero convertito con successo viene quindi stampato sullo standard output dal programma.
- Uno dei blocchi catch gestisce eventuali eccezioni che si verificano durante la conversione.
- Se l'eccezione è di tipo std::invalid_argument viene stampato un messaggio di errore che indica che l'argomento non è valido.
- 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.
- 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
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.
- 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.