我正在尝试使用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);
}
*/
}
答案 0 :(得分:2)
getline是一个while循环,所以循环重复,直到你到达文件末尾,每次都获得一个新行
答案 1 :(得分:0)
目前尚不清楚你是在讨论循环的第一次迭代还是关于循环的结果。
在第一种情况下,它意味着文件中没有行,即文件不包含换行符。您可以使用成员函数getline指定要读取的字符数。例如
const size_t N = 100;
char buffer[N];
fin.getline( buffer, N );
或者您应该为文件中写入的每组数据添加新行字符,然后逐行读取文件。
检查构成文件的代码。也许你忘了写新的字符。