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'
,则会出现一个新行。注意空文件的情况。