2012-11-16 30 views
12

Voglio ottenere una stringa di numeri uno per uno, quindi sto utilizzando un ciclo con cin.get() come funzione che ottiene le mie cifre una alla volta.Utilizzo di cin.get per ottenere un numero intero

Ma cin.get() ottiene le cifre come char s ed anche se sto cercando di utilizzare fusione non riesco a ottenere le mie variabili per contenere il valore numrical e non il valore ASCII dei numeri che ricevo come input.

risposta

20

cin.get Impossibile analizzare i numeri. Potresti farlo manualmente - ma perché preoccuparsi di ri-implementare questa funzione, dal momento che esiste già? *

int number; 
std::cin >> number; 

In generale, gli operatori stream (<< e >>) prendono cura di formattato uscita e di ingresso, istream::get invece estrae solo caratteri prime.


* Naturalmente, se si dispone di di re-implementare questa funzionalità, non c'è niente da fare.

Per ottenere il valore numerico da un carattere numerico, è possibile sfruttare il fatto che i codici carattere delle cifre decimali da 0 a 9 sono consecutivi. Così la seguente funzione possa occulta:

int parse_digit(char digit) { 
    return digit - '0'; 
} 
+0

non mi è permesso di utilizzare le funzioni di Non ho imparato nelle lezioni. – Quaker

+8

@Eran Oh bene, che stupido requisito. Bene, permettimi di modificare la risposta. –

+0

Il 'static_cast' non è necessario. Il compilatore convertirà il valore 'char' in' int' senza che venga detto. –

Problemi correlati