char someArray[n];
std::cin >> someArray; // potential buffer overrun
我在经常访问的 C++ 论坛上多次看到类似上述的代码。是否有充分的理由不将其视为编译时错误?或者至少是一个警告?
最佳答案
C(和 C++)的一个基本前提是编码人员应该知道他们在做什么。否则他们会用 BASIC 编码 :-)
它不允许是错误,因为它是标准允许的,就像 C 中允许的 gets
和 scanf("%s")
一样,尽管事实上它们是等待发生的问题。
您发布的代码很差,在严肃的软件中没有立足之地,但对于“玩具”程序或测试东西来说没问题。您只需要了解它的问题(听起来很像您 了解它们)。
关于c++ - 为什么 istream::operator>> 接受字符指针/数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13243442/