为什么将cin用于数字变量是"坏"的?

Ian*_*004 2 c++ cin

我现任教授陈述了他的教学大纲:

"永远不要使用cin >>直接读取数字变量,如int或double或float.读取字符串(C或C++)并使用atoi或atof转换为数字."

是否有一个原因?起初我认为这是为了避免失败标志,但如果你只是添加输入验证代码是不是很好"cin >> myInt"?

使用他的方法,如果他们输入"4a5"并且我做了atoi它不会仍然抛出错误?

谢谢〜

Lig*_*ica 5

一般来说,它根本没有任何问题.这个建议似乎是错误的.

事实上,单纯依靠stoi和朋友,你失去任何控制转换过程的能力.您可能希望在某些特定于域的情况下使用这些,您希望提取特定数量的字符,然后尝试转换它们,但这取决于业务逻辑.

当然,依赖过时的代码atoi更糟糕的是,遇到许多失败案例时其未定义的行为是什么.

  • 实际上,由于解析失败,您应该在读取失败后提及如何清理流状态. (2认同)