C++ 文件最后一行为空时的停止条件C++;
我正在开发一个FileReader函数,它根据行执行特定的函数 然而,由于某些原因,我想要读取的文件的最后一行总是空的,这会把我的程序搞砸 有没有办法让程序在那一点停止 当尝试运行它时,我得到以下输出 启动程序: 在抛出'std::out_of_range'的实例后调用terminate what():基本字符串::substr --11中止C++ 文件最后一行为空时的停止条件C++;,c++,file,blank-line,C++,File,Blank Line,我正在开发一个FileReader函数,它根据行执行特定的函数 然而,由于某些原因,我想要读取的文件的最后一行总是空的,这会把我的程序搞砸 有没有办法让程序在那一点停止 当尝试运行它时,我得到以下输出 启动程序: 在抛出'std::out_of_range'的实例后调用terminate what():基本字符串::substr --11中止 我知道这是因为那一空行,因为我告诉程序在每一行上获取特定的元素,而这些元素在那一行上是空的。据我所知,您有这样的情况: std::ifstream fil
我知道这是因为那一空行,因为我告诉程序在每一行上获取特定的元素,而这些元素在那一行上是空的。据我所知,您有这样的情况:
std::ifstream file("file.txt");
std::string line;
while(getline(file,line)) {
//read the line
}
line1\nline2\n\n
我还收集(如果我错了,请纠正我)在您的文件末尾,您有两行换行符,如下所示:
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
}
如果这不起作用,那是因为我误解了您的问题,在这种情况下,请提供更多细节。这将有助于我们了解您遇到的问题。理想情况下是一个简单的自包含示例,或者至少是现有代码的一部分。您是否在问当一行为空时如何不执行任何操作?或者你是在问如何知道一行是最后一行?@DrewDormann更具体地说,我想告诉计算机在到达那一行时关闭文件。不仅仅是考虑到这一点。我打赌当(!infle.eof())循环时会有……第一个空行?还是最后一行?或者最后一行,如果它是空的?这有效了!非常感谢您,好心的先生。你救了我,使我免于脱发!