PDA

Visualizza la versione completa : [C++] Conversione di una stringa in int


programfile
04-02-2011, 12:00
Salve a tutti, scusate per la domanda ormai trita e ritrita; ho giÓ effettuato una ricerca sul forum che mi restituisce molti topic, li ho letti, ma nessuno risponde alla mia domanda.
Ho visto soluzioni alla mia domanda che risolvono il problema con istruzioni del tipo "atoi", "itoa", "sprintf", "scanf", ecc... una domanda... ma queste per caso non sono istruzioni del C?
Se la risposta Ŕ si, vorrei chiedere gentilmente il metodo di conversione interamente in C++ senza nessuna istruzione del C o riferimenti al C.
Esempio:


string num = "07";
int x;

Come trasformare la stringa "07" in numero intero 07? (o anche solo 7).
Possibilmente senza usare char, ma solo stringhe.
Esiste per caso una soluzione in questi termini?

Grazie a tutti per la disponibilitÓ! :D

lolide
04-02-2011, 12:11
usa


std::istringstream stringa(numero); stringa >> number;

io preferirei atoi (stringa.c_str());

;)

programfile
04-02-2011, 12:21
Grazie mille!

Dunque quelle istruzioni che ho menzionato prima sono veramente del C e non del C++?
Ma come mai allora si fa un minestrone dei due linguaggi?

Che libreria devo aggiungere all'inizio del file oltre le solite?

Grazie ancora a tutti!!!

GliderKite
04-02-2011, 12:26
Vedi se ti funziona:


template <typename T>
T stot( const std::string &str )
{
std::istringstream sstream(str);
T value;
sstream >> value;

if( sstream.rdstate() & std::stringstream::failbit )
throw std::ios_base::failure("Unable to convert the string\n");

return value;
}


:ciauz:

programfile
04-02-2011, 12:37
Ehm... chiedo scusa per l'ignoranza (sono ancora agli inizi), ma non capisco il tuo codice GliderKite...

Cmq ti ringrazio per la risposta :D

GliderKite
04-02-2011, 12:39
Tranquillo, non ci sono problemi, provalo partendo da qui:


int main()
{
std::string word("23.892");

try{ std::cout << stot <double> (word); }

catch( std::ios_base::failure &exc )
{
std::cout << exc.what();
}


return 0;
}

Loading