cin不会在循环中工作

时间:2013-03-05 12:26:25

标签: c++ for-loop cin

好的,所以我试着学习c ++,我正在制作模拟,但是cin对我不起作用:(

void Simulation::initialize(){
    cout<<"Choose number of players: " <<endl;
    cin>> numberOfPlayer;
    string name;
    int accurasy;
    int life;
    for(int index=0; index <=numberOfPlayer;++index){
        cout<<"Enter name, accurasy and life for player"<<index +1 <<": " <<endl;
        cin>>name;
        cin>>accurasy;
        cin>>life;
        Kombatant comb(name,accurasy,life);
        vect->push_back(comb);

    }
}

这是对我不起作用的代码。我试图将玩家添加到模拟中。一切都按预期工作,直到我进入for循环。出于某种原因,它只能在第一次循环中起作用,直到我复活。然后它跳过生命输入和之后的每个输入(所有循环中的每个输入)。任何人都有任何想法是什么问题?

1 个答案:

答案 0 :(得分:1)

这是因为最后一个换行符仍在输入缓冲区中。因此,当您循环输入名称时,将看到换行符并为您提供空输入。

您必须告诉输入流明确跳过它:

// all your input...

// Skip over the newline in the input buffer
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n')