问题
I want to get a string of numbers one by one, so I'm using a while
loop
with cin.get()
as the function that gets my digits one by one.
But cin.get()
gets the digits as char
s and even though I'm trying to use
casting I can't get my variables to contain the numrical value and not the ascii value
of the numbers I get as an input.
回答1:
cin.get
can’t parse numbers. You could do it manually – but why bother re-implementing this function, since it already exists?*
int number;
std::cin >> number;
In general, the stream operators (<<
and >>
) take care of formatted output and input, istream::get
on the other hand extracts raw characters only.
* Of course, if you have to re-implement this functionality, there’s nothing for it.
To get the numeric value from a digit character, you can exploit that the character codes of the decimal digits 0–9 are consecutive. So the following function can covert them:
int parse_digit(char digit) {
return digit - '0';
}
来源:https://stackoverflow.com/questions/13421965/using-cin-get-to-get-an-integer