c ++中的Getline错误

时间:2014-04-16 17:42:17

标签: c++ getline

我正在尝试使用getline()将文件的第一行读入c ++中的字符串。我遇到的问题是它将整个文件读入该字符串,而不仅仅是第一行。

我怎样才能让它只阅读第一行?

这是我的代码:

while (!fin.eof())
{
    getline(fin, title);
    cout << title << endl;
    /*getline(fin, director);
    cout << director << endl;
    getline(fin, year);
    cout << year<<endl;
    getline(fin, rating);
    cout << rating <<endl;
    getline(fin, url);
    getline(fin, actor);
    /*
    while (actor.compare("$$$$")!=1)
    {
        actors.push_back(actor);
        getline(fin, actor);
    }
    */

}

2 个答案:

答案 0 :(得分:2)

getline是一个while循环,所以循环重复,直到你到达文件末尾,每次都获得一个新行

答案 1 :(得分:0)

目前尚不清楚你是在讨论循环的第一次迭代还是关于循环的结果。

在第一种情况下,它意味着文件中没有行,即文件不包含换行符。您可以使用成员函数getline指定要读取的字符数。例如

const size_t N = 100;

char buffer[N];

fin.getline( buffer, N );

或者您应该为文件中写入的每组数据添加新行字符,然后逐行读取文件。

检查构成文件的代码。也许你忘了写新的字符。