c++ - 为什么 istream::operator>> 接受字符指针/数组?

标签 c++ arrays pointers char istream

char someArray[n];
std::cin >> someArray; // potential buffer overrun

我在经常访问的 C++ 论坛上多次看到类似上述的代码。是否有充分的理由不将其视为编译时错误?或者至少是一个警告?

最佳答案

C(和 C++)的一个基本前提是编码人员应该知道他们在做什么。否则他们会用 BASIC 编码 :-)

它不允许是错误,因为它是标准允许的,就像 C 中允许的 getsscanf("%s") 一样,尽管事实上它们是等待发生的问题。

您发布的代码很差,在严肃的软件中没有立足之地,但对于“玩具”程序或测试东西来说没问题。您只需要了解它的问题(听起来很像您 了解它们)。

关于c++ - 为什么 istream::operator>> 接受字符指针/数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13243442/

相关文章:

C++ 将 int 添加到 int 数组

c - while 循环中的后增量

c - 未定义长度的结构数组会产生段错误

javascript - 循环卡在第一个区间

javascript - 如何在imamacros中循环数组?

c++ - 按地址从 vector 中删除一个元素

c - 动态数组 C 上的无效赋值

c++ - 更改dll对windows的依赖

c++ - 使用 += 运算符是否可以安全地使用 [] 创建新的 std::map 条目?

Java、JNI 和 C++ : How do I generate a header file from native method declarations?