已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。
6小时前关门了。
Improve this question
当我使用cin.get时,我的程序员表现得很奇怪。在第一个cin之后,它会跳过所有的下一个cin,直到结束。我想,在输入流中保持'\n',cin会在开始时停止阅读流。我需要如何更正我的代码才能让我的程序正确工作?
#include <iostream>
struct Persona
{
char name[20];
unsigned short age;
};
int main()
{
using namespace std;
unsigned short group;
cout << "What is size of your group? ";
cin >> group;
Persona *Students = new Persona[group];
for (int i=0; i<group; i++)
{
cout << "What is name of the student #" << i+1 << "? ";
cin.get(Students[i].name, 20);
cout << "How old is student? ";
cin >> Students[i].age;
}
cout << "Well done! Here is list of Students:" << endl;
for (int i=0; i<group; i++)
{
cout << Students[i].name << '\t' << Students[i].age << " years old" << endl;
}
delete [] Students;
return 0;
}
我尝试使用cin.clear,但它清除标志,但不清除流。
1条答案
按热度按时间k10s72fa1#
组;
这会在流中留下换行符,所以你需要在后面跟一个
cin.get();
来将其从流中清除。如果需要读取其中包含空格的输入,则可以将字段声明为字符串并改用
cin.getline(cin, Students[i].name)