C++ 如何避免计算文件末尾的空行?

C++ 如何避免计算文件末尾的空行?,c++,counting,C++,Counting,我有一个项目,我要数一数文件中的行、字和字符。我的程序运行得很好,但如果有空行,我不应该在文件末尾计算空行 如果文件末尾有空行,如何避免计算空行数?我可以假设文件末尾最多有一个空行 这是我数线的循环: int count_lines(fstream& infile) { int counter_lines=0; string unused; while ( getline(infile, unused) ) { counter_lines++; } in

我有一个项目,我要数一数文件中的行、字和字符。我的程序运行得很好,但如果有空行,我不应该在文件末尾计算空行

如果文件末尾有空行,如何避免计算空行数?我可以假设文件末尾最多有一个空行

这是我数线的循环:

int count_lines(fstream& infile) {
int counter_lines=0;
string unused;

while ( getline(infile, unused) ) {
        counter_lines++;
    }
    infile.close();
return counter_lines;
}

使用
bool
变量指示读取的行是否为空,将其称为
lastlinewasbank
(将其初始化为false)。然后每次循环时,将其设置为
unused.empty()

循环完成后,如果
lastlinewasbank
为真,则从计数中减去一


然后,您可能需要将
未使用的
更改为不同的变量名。

如果有一个
bool
变量来指示读取的行是否为空,请将其命名为
lastlinewasbank
(将其初始化为false)。然后每次循环时,将其设置为
unused.empty()

循环完成后,如果
lastlinewasbank
为真,则从计数中减去一


然后,您可能需要将
未使用的
更改为不同的变量名。

对空行使用单独的计数器。。如果遇到EOF,则丢弃计数器,否则将其添加到实际行数中。这将丢弃文件末尾的多个空行。

为空行使用单独的计数器。。如果遇到EOF,则丢弃计数器,否则将其添加到实际行数中。这将丢弃文件末尾的多个空行。

使用
if
语句筛选空行。。。空白行有一个特定的签名,你可以过滤掉它。但是我不想过滤掉所有的空行。只有当文件末尾有一个空行(我可以假设末尾最多有一个空行)时,文档末尾的空行也有唯一的签名。如果你查看文件末尾的空白行,你可以看到它不包含和过滤的内容。这里有一个简单的解决方案:用char读取字符,并记住你读到的最后一个字符。一旦流用完,如果最后一个字符是
'\n'
,则会出现一个新行。注意空文件的情况。使用
if
语句过滤掉空行。。。空白行有一个特定的签名,你可以过滤掉它。但是我不想过滤掉所有的空行。只有当文件末尾有一个空行(我可以假设末尾最多有一个空行)时,文档末尾的空行也有唯一的签名。如果你查看文件末尾的空白行,你可以看到它不包含和过滤的内容。这里有一个简单的解决方案:用char读取字符,并记住你读到的最后一个字符。一旦流用完,如果最后一个字符是
'\n'
,则会出现一个新行。注意空文件的情况。