C++ C++;将文件输入中的单词指定给字符串或整数

C++ C++;将文件输入中的单词指定给字符串或整数,c++,file,ifstream,getline,C++,File,Ifstream,Getline,我需要以这种格式打开一个文件 Firstname Lastname 1 2 3 4 5 Firstname Lastname 2 3 4 5 6 我需要将一行的名字分配给结构的成员数组,将该行的姓氏分配给结构的另一个成员,将该行的每个数字分配给结构中的分数数组,并将每一新行分配给结构数组的下一个索引,执行相同的操作(如果我的措辞如此糟糕,请原谅) 我不太担心分数分配,我知道怎么做,但现在我尝试使用getline一次将每个单词分配给结构中的字符串,但是当我运行代码时,它跳过第一行,输入第二行的

我需要以这种格式打开一个文件

Firstname Lastname 1 2 3 4 5

Firstname Lastname 2 3 4 5 6
我需要将一行的名字分配给结构的成员数组,将该行的姓氏分配给结构的另一个成员,将该行的每个数字分配给结构中的分数数组,并将每一新行分配给结构数组的下一个索引,执行相同的操作(如果我的措辞如此糟糕,请原谅)

我不太担心分数分配,我知道怎么做,但现在我尝试使用getline一次将每个单词分配给结构中的字符串,但是当我运行代码时,它跳过第一行,输入第二行的名字和姓氏,我不知道如何从第一行开始

这是我的密码

ifstream fin;
fin.open("Scores.txt");
if (!(fin.is_open()))
    cout << "Failed to open file.\n";

if (stuCount < 10)
{
    for (int n = 0; !fin.eof();)
    {
        for (string line[10]; getline(fin, line[n]); n++)
        {
            fin >> students[stuCount].fname >> students[stuCount].lname;
            stuCount++;
            cout << line[n] << endl;
        }
    }
}
ifstream-fin;
财务公开(“Scores.txt”);
如果(!(fin.is_open())
cout>学生[stuCount].fname>>学生[stuCount].lname;
stuCount++;

cout您的问题是getline和(>>)操作符都在提升流中读取缓冲区的位置。您需要缓冲对getline的调用

更改代码的一个想法是:

ifstream fin("Scores.txt", ifstream::in);
if (!fin.is_open()) {
cout << "Failed to open file." << endl;
    return -1;
}

if (stuCount < 10)
{
    while (!fin.eof())
    {
        string line;
        getline(fin, line);
        stringstream ss(line);
        ss >> students[stuCount].fname >> students[stuCount].lname;
        cout << line << endl;
        stuCount++;
    }
}
ifstream-fin(“Scores.txt”,ifstream::in);
如果(!fin.is_open()){
cout student[stuCount].fname>>学生[stuCount].lname;

非常感谢你的回复。很遗憾,我们在课堂上还没有讨论过字符串流,所以我不能使用它。你知道其他方法吗?@DatNguyen那么你原来的问题是正确的,你只需要修复你的循环。将for循环更改为我发布的while循环。不幸的是,它仍然跳过了第一行当我使用这个循环时。