c++ - 为什么用cin做数值变量是 "bad"?

标签 c++ cin

<分区>

我现在的教授在他的教学大纲中说:

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

这是有原因的吗?起初我以为这是为了避免失败标志,但如果您只是添加输入验证码,“cin >> myInt”不是很好吗?

用他的方法,如果他们输入“4a5”,而我输入atoi,它不会仍然报错吗?

谢谢~

最佳答案

总的来说,一点毛病都没有。这个建议似乎是错误的。

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

当然,依赖像 atoi 这样过时的代码会更糟,因为它的未定义行为会遇到许多失败案例。

关于c++ - 为什么用cin做数值变量是 "bad"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27990981/

相关文章:

java - 如何获得填字游戏的多个解决方案?

c++ - 输入两个数字后程序关闭

c++ - 累积整数从 C++11 中的文件中读取数据

c++ - 重载的流提取操作符

c++ - 构造函数 "=default"和 C++ 中编译器生成的构造函数有什么区别?

c++ - 强制 cpp_dec_float 向下舍入

javascript - C++ 使用批处理脚本清除所有浏览器 cookie

c++ - 如何在vector<vector<float>*>*中写入数据?

Cin 之后的 C++ Getline

c++ - C/C++ 数组 - 我使用了哪种赋值?