C++ 使用cin.get获取整数

C++ 使用cin.get获取整数,c++,casting,C++,Casting,我想一个接一个地得到一组数字,所以我使用了while循环 使用cin.get()函数逐个获取我的数字 但是cin.get()将数字获取为chars,即使我正在尝试使用 强制转换我无法使变量包含numric值而不是ascii值 作为输入获取的数字。cin.get无法分析数字。您可以手动执行此操作,但既然此功能已经存在,为什么还要麻烦重新实现它呢* 通常,流操作符()负责格式化的输出和输入,istream::get则只提取原始字符 *当然,如果你必须重新实现这个功能,那就没什么用了 要从数字字符中

我想一个接一个地得到一组数字,所以我使用了
while
循环 使用
cin.get()
函数逐个获取我的数字

但是
cin.get()
将数字获取为
char
s,即使我正在尝试使用 强制转换我无法使变量包含numric值而不是ascii值
作为输入获取的数字。

cin.get
无法分析数字。您可以手动执行此操作,但既然此功能已经存在,为什么还要麻烦重新实现它呢*

通常,流操作符(
)负责格式化的输出和输入,
istream::get
则只提取原始字符


*当然,如果你必须重新实现这个功能,那就没什么用了

要从数字字符中获取数值,可以利用十进制数字0–9的字符代码是连续的。因此,以下函数可以将其转换为:

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

我不允许使用我在课堂上没有学过的函数。@Eran哦,太好了,多么愚蠢的要求。好吧,让我修改一下答案。
static\u cast
是不需要的。编译器将把
char
值转换为
int
,而不被告知。@Eran是时候开始自己思考了;)@KonradRudolph—在过去,一些C程序员会为文档使用返回值
malloc
int*ip=(int*)malloc(3)。如果他们忘记了
#包含
,编译器将
malloc
视为返回
int
的函数(是的,我说过这是古老的C)。在
int
与指针大小不同的体系结构上,这会导致重大问题。因此,我从来都不喜欢使用强制转换来记录程序员希望编译器做的事情,因为强制转换可以将编译时错误转化为运行时错误。
int parse_digit(char digit) {
    return digit - '0';
}