向量大小受std :: cin影响吗?

古奇

我遇到一个非常奇怪的错误,在收到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之间存在某种联系吗?我很困扰...

里卡扬(Rikayan Bandyopadhyay)

中的最后一个字符buffer为保留\0因此,如果您输入4 chars,则最后一个char将超出其保留空间buffer,可能会被占用asdf因此,基本上它会覆盖的一部分asdf

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章