Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么istream::operator>&燃气轮机;是否接受字符指针/数组? 我在C++论坛上经常看到类似于上面无数次的代码。是否有充分的理由不将其视为编译时错误?或者至少是一个警告?_C++_Arrays_Pointers_Char_Istream - Fatal编程技术网

为什么istream::operator>&燃气轮机;是否接受字符指针/数组? 我在C++论坛上经常看到类似于上面无数次的代码。是否有充分的理由不将其视为编译时错误?或者至少是一个警告?

为什么istream::operator>&燃气轮机;是否接受字符指针/数组? 我在C++论坛上经常看到类似于上面无数次的代码。是否有充分的理由不将其视为编译时错误?或者至少是一个警告?,c++,arrays,pointers,char,istream,C++,Arrays,Pointers,Char,Istream,C(和C++)的一个基本前提是编码人员应该知道他们在做什么。否则他们将使用BASIC进行编码:-) 这是不允许的错误,因为根据标准它是允许的,就像C中允许get和scanf(“%s”)一样,尽管它们是一个等待发生的问题 您发布的代码很糟糕,在严肃的软件中没有一席之地,但对于“玩具”程序或测试项目来说,它是可以接受的。你只需要意识到它的问题(听起来很像你意识到的)。C(和C++)的一个基本前提是程序员应该知道他们在做什么。否则他们将使用BASIC进行编码:-) 这是不允许的错误,因为根据标准它是允

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

这是不允许的错误,因为根据标准它是允许的,就像C中允许
get
scanf(“%s”)
一样,尽管它们是一个等待发生的问题


您发布的代码很糟糕,在严肃的软件中没有一席之地,但对于“玩具”程序或测试项目来说,它是可以接受的。你只需要意识到它的问题(听起来很像你意识到的)。

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

这是不允许的错误,因为根据标准它是允许的,就像C中允许
get
scanf(“%s”)
一样,尽管它们是一个等待发生的问题


您发布的代码很糟糕,在严肃的软件中没有一席之地,但对于“玩具”程序或测试项目来说,它是可以接受的。你只需要知道它的问题(听起来很像你知道的)。< / P > < P>如果C++是一下子就被发明的,它可能根本就不存在——如果你想读一个字符串,你必须把它读成<代码> STD::String < /Cord>,这就是它的结尾。 遗憾的是,C++在代码”被标准化(或根本发明之前)使用了相当长的一段时间。
operator>
istream::getline
(不要误认为是
std::getline
)都是在那个时候发明的。当它们被发明时,几乎没有(或根本没有)真正的替代品,所以它们使用字符数组


当然,今天还有其他的选择,最好避免这些,除非你用一些不支持高级替代品的古编译器来写代码。

< P>如果C++是一下子就被发明的,如果你想读一个字符串,它可能根本就不存在。您必须将它读入一个
std::string
,这样就结束了

遗憾的是,C++在代码”被标准化(或根本发明之前)使用了相当长的一段时间。
operator>
istream::getline
(不要误认为是
std::getline
)都是在那个时候发明的。当它们被发明时,几乎没有(或根本没有)真正的替代品,所以它们使用字符数组


当然,今天还有其他选择,最好是避免这些问题,除非你在使用不支持高级替代方案的古老编译器编写代码时陷入困境。

这可能是为了让使用C样式字符串更容易。也可能是为了让使用C样式字符串更容易。相关。这不是问题,因为你不会使用像C++那样的裸C数组。这是一个非问题,因为无论如何你都不会使用像C++那样的裸C数组。
char someArray[n];
std::cin >> someArray; // potential buffer overrun