Articolo originale: String to Int in C++ – How to Convert a String to an Integer Example
Quando programmi in C++, ci sono spesso casi in cui devi convertire un tipo di dato in un altro.
In questo articolo, imparerai come convertire una stringa in un intero in C++ usando i due metodi più popolari per svolgere questa operazione.
Iniziamo!
Tipi di dati in C++
Il linguaggio di programmazione C++ possiede alcuni tipi di dati integrati:
int
, per i numeri interi (ad esempio 10, 150)double
, per i numeri in virgola mobile (ad esempio 5.0, 4.5)char
, per i caratteri singoli (ad esempio 'D', '!')string
, per le sequenze di caratteri (ad esempio "Hello")bool
, per i valori booleani (true o false)
C++ è un linguaggio di programmazione fortemente tipizzato, che vuol dire che per creare una variabile occorre dichiarare esplicitamente il tipo di valore che vi dovrà essere memorizzato.
Come dichiarare e inizializzare degli int
in C++
Per dichiarare una variabile int
in C++ devi prima scrivere il tipo di dato della variabile – in questo caso int
. In questo modo, il compilatore sa il tipo di valore che una variabile può contenere e di conseguenza le azioni che può effettuare.
Poi, hai bisogno di dare un nome alla variabile.
Infine, non dimenticare un punto e virgola al termine dell'istruzione!
#include <iostream>
int main() {
int age;
}
Puoi assegnare un valore alla variabile che hai creato, in questo modo:
#include <iostream>
int main() {
int age;
age = 28;
}
Oppure, invece di svolgere queste azioni in due passaggi separati, puoi combinarli inizializzando la variabile e alla fine stampare il risultato.
// Un file di intestazione che permette l'utilizzo di funzioni per restituire informazioni come output
//Ad esempio, cout o cin per informazioni di input
#include <iostream>
// Un'istruzione namespace; non avrai bisogno di usare il prefisso std::
using namespace std;
int main() { // Inizio della funzione principale del programma
int age = 28;
// Inizializzazione della variabile
// Inizializzare vuol dire specificare il tipo, il nome e il valore di una variabile.
// output sulla console: "My age is 28", usando il chaining, <<
cout << "My age is: " << age << endl;
}// end the main function
Come dichiarare e inizializzare delle string
in C++
Le stringhe sono delle sequenze di caratteri singoli.
Dichiarare una stringa in C++ avviene in modo analogo a dichiarare e inizializzare degli int
, come abbiamo visto nella sezione precedente.
La libreria standard C++ fornisce una classe string
. Per poter usare il tipo di dato string, devi includere la libreria di intestazione <string>
in cima al tuo file, dopo #include <iostream>
.
Dopo avere aggiunto il file di intestazione, puoi anche aggiungere using namespace std;
come abbiamo visto prima.
Tra le altre cose, dopo aver aggiunto questa riga, non è necessario usare std::string
per creare una variabile stringa – basta soltanto string
.
#include <iostream>
#include <string>
using namespace std;
int main() {
// Dichiarazione di una variabile stringa
string greeting;
greeting = "Hello";
// `=` è l'operatore di assegnazione che assegna il valore alla variabile
}
Oppure puoi inizializzare una variabile stringa e stamparla sulla console:
#include <iostream>
#include <string>
using namespace std;
int main() {
// Inizializzazione della variabile stringa
string greeting = "Hello";
//output sulla console: "Hello"
cout << greeting << endl;
}
Come convertire una stringa in un intero
Come detto precedentemente, C++ è un linguaggio fortemente tipizzato.
Se provi a dare un valore che non è conforme al tipo di dato, otterrai un errore.
Inoltre, convertire una stringa in un intero non è così semplice come una conversione di tipo da double
a int
.
Ad esempio, non puoi fare questo:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str = "7";
int num;
num = (int) str;
}
Dopo la compilazione otterrai questo errore:
hellp.cpp:9:10: error: no matching conversion for C-style cast from 'std::__1::string' (aka
'basic_string<char, char_traits<char>, allocator<char> >') to 'int'
num = (int) str;
^~~~~~~~~
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string:875:5: note: candidate function
operator __self_view() const _NOEXCEPT { return __self_view(data(), size()); }
^
1 error generated.
Ci sono alcuni modi per convertire una stringa in un intero. Ne vedremo due, menzionati nelle sezioni a seguire.
Conversione da string
a int
usando la funzione stoi()
Un modo efficace per convertire un oggetto stringa in un int
numerico è usare la funzione stoi()
.
Questo metodo è comunemente usato nelle nuove versioni di C++, visto che è stato introdotto con C++11.
Prende come input una stringa e restituisce come output una sua versione di tipo int
.
#include <iostream>
#include <string>
using namespace std;
int main() {
// una variabile stringa chiamata str
string str = "7";
// stampa sulla console
cout << "I am a string " << str << endl;
// conversione della variabile stringa str in valore int
// il nuovo valore viene inserito in una variabile chiamata num che contiene valori int
int num = stoi(str);
// stampa sulla console
cout << "I am an int " << num << endl;
}
Output:
I am a string 7
I am an int 7
Conversione da string
a int
usando la classe stringstream
La classe stringstream
è principalmente usata nelle versioni più vecchie di C++. Funziona eseguendo input e output su stringhe.
Per usarla, devi prima includere la libreria sstream
in cima al programma aggiungendo la riga #include <sstream>
.
Poi devi aggiungere stringstream
e creare un oggetto stringstream
, che conterrà il valore della stringa da convertire in un intero e sarà usato durante il processo di conversione.
L'operatore <<
viene usato per estrarre la stringa dalla variabile stringa.
Infine, l'operatore >>
viene usato per dare come input alla variabile int il nuovo valore intero convertito.
#include <iostream>
#include <string>
#include <sstream> // ti permette di usare stringstream nel tuo programma
using namespace std;
int main() {
// creazione di un oggetto stringstream
stringstream ss;
// una variabile chiamata str, di tipo string
string str = "7";
// una variabile chiamata num, di tipo int
int num;
// estrazione della stringa dalla variabile str (la stringa viene data come input a stream)
ss << str;
// il valore convertito viene inserito nella variabile int
ss >> num;
// stampa sulla console
cout << num << endl; // viene stampato il valore intero 7
}
Conclusione
Ed ecco fatto! Hai visto due semplici metodi per convertire una stringa in un intero in C++.
Grazie per aver letto questo articolo e buona programmazione 😊