当用户输入姓名时,我需要使用getline存储整行。当我运行程序时,它传递getline行(cin,st [i] .name);我的意思是输入功能不起作用,它会跳过下一个用于“得分”的cin。
struct Student {
string name;
int score;
char grade;
};
void main() {
int SIZE;
cout << " How many students are you going to add ? ";
cin >> SIZE;
Student* st = new Student[SIZE]; // user determines size of array.
int i;
for (i = 0; i < SIZE; i++)
{
if (st[i].name.empty()) // if array list of name is empty, take input.
{
cout << "name and surname : ";
//cin >> st[i].name;
getline(cin, st[i].name);
}
cout << "Score : ";
cin >> st[i].score; // take quiz score from user.
- 我没有把整个主要功能。
因此,当我运行程序时,会显示后退屏幕
还有其他方法可以获取名称输入吗?
答案 0 :(得分:3)
在cin >> SIZE;
之后,尾随换行仍然保留在标准输入中。
您需要cin.ignore()
跳过剩余的换行符,以便后面的getline()
可以获得该值。