我正在开发一个FileReader函数,它根据行执行特定的功能。
然而,由于某些原因,我想要阅读的文件的最后一行总是空白,这会弄乱我的程序。
有没有办法告诉程序在那时停止?
尝试运行时,我得到以下输出
启动程序: 抛出'std :: out_of_range'实例后调用终止 what():basic_string :: substr - - 1 1 Abort
而且我知道这是因为我告诉程序要在每一行上获取特定元素并且那行上的元素为空,因为该空行。
答案 0 :(得分:1)
根据我的理解,你有类似的东西:
std::ifstream file("file.txt");
std::string line;
while(getline(file,line)) {
//read the line
}
我也收集(纠正我,如果我错了)在文件的末尾,你有两个换行符,如下:
line1\nline2\n\n
如果是这种情况,那么while循环体肯定会在末尾的一个空行上执行。要解决这个问题,只需忽略空行:
while(getline(file,line)) {
if (line == "") continue;
//read the line
}
如果这不起作用,那是因为我误解了你的问题,在这种情况下请提供更多细节。