<分区>
我现在的教授在他的教学大纲中说:
“永远不要使用 cin >> 直接读入数字变量,如 int 或 double 或 float。作为字符串(C 或 C++)读取并使用 atoi 或 atof 转换为数字。”
这是有原因的吗?起初我以为这是为了避免失败标志,但如果您只是添加输入验证码,“cin >> myInt”不是很好吗?
用他的方法,如果他们输入“4a5”,而我输入atoi,它不会仍然报错吗?
谢谢~
<分区>
我现在的教授在他的教学大纲中说:
“永远不要使用 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/