将 getline() 与文件一起使用

using getline() with files

本文关键字:一起 文件 getline      更新时间:2023-10-16

我想知道为什么当我使用getline()时我的文件输入不起作用。我试图temp去掉空格,但这确实也奏效了。

void getKittenFromFile(string file, roster& kitt) {
string temp;
ifstream inFS;
int i = kitt.size;
inFS.open(file);
if (!inFS.is_open()) {
cout << "Error! File not found." << endl;
}
else {
while (!inFS.eof() && kitt.size < 10) {
getline(inFS, kitt.kittens[i].name);
getline(inFS, kitt.kittens[i].color);
inFS >> kitt.kittens[i].score;
i++;
kitt.size++;
}

该文件如下所示:

Willow
dark brown
66
jack
brown
84
Will
blue
6

正如其中一条评论所提到的,由于使用>>阅读,您的getline()会捕获尾随的""。要解决此问题,您可以使用get()清除单个换行符,或者更完整的解决方案是使用:inFS.ignore(numeric_limits<streamsize>::max(), 'n');