prayforvictory
2015-11-10 04:10
采纳率: 100%
浏览 1.8k

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条)

相关推荐 更多相似问题