使用cin.get获取整数

Qua*_*ker 15 c++ casting

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

cin.get()得到数字为chars,即使我正在尝试使用转换我不能让我的变量包含数字值而不是我得到的数字的ascii值作为输入.

Kon*_*lph 29

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

int number;
std::cin >> number;
Run Code Online (Sandbox Code Playgroud)

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


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

要从数字字符获取数值,可以利用十进制数字0-9的字符代码是连续的.所以以下函数可以转换它们:

int parse_digit(char digit) {
    return digit - '0';
}
Run Code Online (Sandbox Code Playgroud)

  • @Eran哦,太棒了,这是多么愚蠢的要求.好吧,让我修改一下答案. (8认同)
  • @KonradRudolph - 在过去,一些 C 程序员会将 `malloc` 的返回值转换为“文档”:`int *ip = (int*)malloc(3);`。如果他们忘记了 `#include &lt;stdlib.h&gt;`,编译器会将 `malloc` 视为返回 `int` 的函数(是的,我 ** 确实** 说这是古老的 C)。在 int 与指针大小不同的架构上,这会导致重大问题。所以我 **从不** 喜欢使用强制转换来记录程序员希望编译器做它无论如何都会做的事情,因为这种强制转换可以将编译时错误变成运行时错误。 (3认同)
  • @Eran是时候开始用自己的脑袋思考了;) (2认同)