我想知道为什么当我使用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');