17

我想一个一个地得到一串数字,所以我使用一个while循环cin.get()作为函数来一个一个地获取我的数字。

但是cin.get()将数字设为chars,即使我尝试使用强制转换,我也无法让我的变量包含数值,而不是作为输入的数字的 ascii 值。

4

1 回答 1

35

cin.get无法解析数字。您可以手动完成 - 但是既然它已经存在,为什么还要重新实现这个功能呢?*

int number;
std::cin >> number;

通常,流运算符 ( <<and >>) 负责格式化输出和输入,istream::get另一方面仅提取原始字符。


*当然,如果你必须重新实现这个功能,那也没用。

要从数字字符中获取数值,您可以利用十进制数字 0-9 的字符代码是连续的。所以下面的函数可以隐藏它们:

int parse_digit(char digit) {
    return digit - '0';
}
于 2012-11-16T18:01:48.273 回答