c++ 你是怎么工作的?你能解释一下吗?[关闭]

s4chpxco  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(107)

已关闭。此问题需要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,但它清除标志,但不清除流。

k10s72fa

k10s72fa1#

组;
这会在流中留下换行符,所以你需要在后面跟一个cin.get();来将其从流中清除。
如果需要读取其中包含空格的输入,则可以将字段声明为字符串并改用cin.getline(cin, Students[i].name)

相关问题