我有一个包含动物数据的文件,我读了每一行并将信息处理到我的struct数组中,但是问题是动物文件的底部有一个空格(我不能简单地删除它),所以当我处理while循环,它包括带有空格的行。任何帮助将是巨大的! 而且我的文件看起来像这样:AnimalName:AnimalType:RegoNumber:ProblemNumber。
while (!infile.eof()) {
getline(infile, ani[i].animalName, ':');
getline(infile, ani[i].animalType, ':');
getline(infile, str, ':');
ani[i].Registration = stoi(str);
getline(infile, str, '.');
ani[i].Problem=stoi(str);
cout << "Animal added: " << ani[i].Registration << " " << ani[i].animalName << endl;
AnimalCount++;
i++;
}
答案 0 :(得分:2)
如果该行仅包含 个空格,您能否检查其长度(应为1),并且是否等于空格?
如果检测到这样的行,只需中断循环即可。
#include <iostream>
#include <fstream>
int main(void) {
std::ifstream infile("thefile.txt");
std::string line;
while(std::getline(infile, line)) {
std::cout << "Line length is: " << line.length() << '\n';
if (line.length() == 1 && line[0] == ' ') {
std::cout << "I've detected an empty line!\n";
break;
}
std::cout << "The line says: " << line << '\n';
}
return 0;
}
对于测试文件(第二行包含一个空格):
hello world
end
输出符合预期:
Line length is: 11
The line says: hello world
Line length is: 1
I've detected an empty line!