Fstream getline() 只从文本文件的第一行读取,忽略其他每一行

Fstream getline() only reading from the very first line of text file, ignoring every other line

我正在处理一个编码项目,我在该项目中对文本文件中的数据进行排序和组织,但我无法让 getline() 函数读取第一行。

我们的想法是捕获整条线,将其分成 3 个部分,将其分配给一个对象,然后继续。除了让 getline() 正常工作之外,我可以做任何事情,这是我遇到问题的代码片段:

ifstream fin;
fin.open("textFile.txt");
while (!fin.eof()) // while loop to grab lines until the end of file is reached
{
    getline(fin, line); 
    fin >> first >> last >> pace; // assigning the data to their respective variables
    ClassObject obj(first, last, pace); // creating an object with those variables
    ClassVector.push_back(obj); // assignment object to vector
}

这是我最接近读取每一行同时还将数据排序到向量中的一次,但正如我之前提到的,getline() 将读取第 1 行,并跳过文件的其余部分(1000 行) ).

你可以做的是而不是使用 !fin.eof()。我更喜欢使用类似这样的东西:

    ifstream file ( fileName.c_str() );

    while (file >> first >> last >> pace ) // assuming the file is delimited with spaces
    {
        // Do whatever you want with first, last, and pace
    }

“While 循环”将继续读取下一行,直到我们到达文件末尾。

如果 first, last, pace 的长度是常量,你也可以只获取该行的内容(在一个字符串变量中)并在其上使用 substring,但是这仅适用于整个文件的长度恒定的特定情况。