好的,所以我试着学习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循环。出于某种原因,它只能在第一次循环中起作用,直到我复活。然后它跳过生命输入和之后的每个输入(所有循环中的每个输入)。任何人都有任何想法是什么问题?
答案 0 :(得分:1)
这是因为最后一个换行符仍在输入缓冲区中。因此,当您循环输入名称时,将看到换行符并为您提供空输入。
您必须告诉输入流明确跳过它:
// all your input...
// Skip over the newline in the input buffer
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n')