我遇到一个非常奇怪的错误,在收到std :: cin输入后,std :: vector的大小发生了变化。我已经隔离了问题,但是我不明白为什么会这样:
int main()
{
std::vector<int> asdf;
asdf.push_back(1);
asdf.push_back(42);
printf("Size: %d\n",asdf.size()); //prints 2...
char buffer[4];
printf("Input 4 random characters:");
std::cin >> buffer;
printf("\n%d\n",asdf.size()); //prints 32???
}
当我发表评论时std::cin >> buffer;
,未发生错误。谁能说明为什么会这样?这是由于vector和iostream之间存在某种联系吗?我很困扰...
中的最后一个字符buffer
为保留\0
。因此,如果您输入4 char
s,则最后一个char
将超出其保留空间buffer
,可能会被占用asdf
。因此,基本上它会覆盖的一部分asdf
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句