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

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 领域专家: C/C++技术领域 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条)

报告相同问题?