我正在研究一个 FileReader 函数,该函数根据行执行特定功能。
但是由于某种原因,我要读取的文件的最后一行总是空白,这会弄乱我的程序。
有没有办法让程序在那个时候停止?
尝试运行它时,我得到以下输出
启动程序:在抛出 'std::out_of_range' 实例后调用终止 what(): basic_string::substr - - 1 1 Abort
我知道这是因为那个空白行,因为我告诉程序在每一行上获取特定元素,而这些元素在该行上为空。
我正在研究一个 FileReader 函数,该函数根据行执行特定功能。
但是由于某种原因,我要读取的文件的最后一行总是空白,这会弄乱我的程序。
有没有办法让程序在那个时候停止?
尝试运行它时,我得到以下输出
启动程序:在抛出 'std::out_of_range' 实例后调用终止 what(): basic_string::substr - - 1 1 Abort
我知道这是因为那个空白行,因为我告诉程序在每一行上获取特定元素,而这些元素在该行上为空。
据我了解,你有这样的事情:
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
}
如果这不起作用,那是因为我误解了您的问题,在这种情况下,请提供更多详细信息。