prayforvictory 2015-11-10 04:10 采纳率: 100%
浏览 1815
已采纳

c++初学者求助:c++vector 初始化出现问题

#include
#include
using namespace std;
int main()
{
vector v1;
vector v2;
cout<<"请输入v1的内容,整数"< int i=0,j=0;
while(cin>>i)
v1.push_back(i);
cout<<"请输入v2的内容,整数"< while(cin>>j)
v2.push_back(j);

    return 0;

}

程序只执行到cout<<"请输入v2的内容,整数"<<endl;
第二个while并没有执行,是为什么?

  • 写回答

5条回答 默认 最新

  • yhl_leo 博客专家认证 2015-11-10 05:30
    关注
         vector<int> v1;
        vector<int> v2;
        cout<<"请输入v1的内容,整数"<<endl;
        int i=0,j=0;
    
        bool succeed = true;
        while(succeed)
        {
            succeed = cin>>i;
            cout << "succeed " << succeed << endl;
            v1.push_back(i);
        }
    
        cout<<"请输入v2的内容,整数"<<endl;
        bool succeed2 = cin>>j;
        cout << "succeed2 " << succeed2 << endl;
        while(cin>>j)
            v2.push_back(j);
    

    强调两点:

    • 1 程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据;
    • 2 正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入。代码修改成上面的样子后可以看出,一旦cin>>状态由good转为bad,则不管后面的判断状态cin>>j始终为false

    运行截图:
    Results

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决