如何在C++中计算文件的行数?

mal*_*yeb 23 c++ io file-io fstream ifstream

我怎么能算使用标准班线,fstream以及ifstream

Abh*_*hay 99

这个怎么样 :-

  std::ifstream inFile("file"); 
  std::count(std::istreambuf_iterator<char>(inFile), 
             std::istreambuf_iterator<char>(), '\n');
Run Code Online (Sandbox Code Playgroud)

  • @ fingerprint211b:在结果中添加一个:-)总是有这种权衡,你是否在文件末尾有换行符. (6认同)
  • 美丽而优雅.喜欢那个STL. (5认同)
  • @ MIH1406:`#include <algorithm>` (4认同)
  • 重点是这个`size_t n = 0; while (getline (stream, string)) n++;` 无论文件是否有 POSIX `eof`,都会准确报告行数。如本答案所示,“std::count”方法将无法计算最后一行——即使存在文本可供读取。无论如何,行数应该准确。整个问题的关键在于为什么绝大多数文本编辑器继续编写带有非 POSIX 结尾的文件。`:)` (3认同)
  • @fingerprint211b:那么少一行。仅仅因为最后一行是空白的并不意味着它与任何其他行有任何不同。 (2认同)
  • @MIH:快速谷歌搜索会告诉你``std :: count()`在`<algorithm>`. (2认同)

Mar*_*ork 12

您逐行读取文件.计算您阅读的行数.

  • 这听起来像一个_huge_过度复杂!;-) (24认同)

Bil*_*eal 10

这是Craig W. Wright答案的正确版本:

int numLines = 0;
ifstream in("file.txt");
std::string unused;
while ( std::getline(in, unused) )
   ++numLines;
Run Code Online (Sandbox Code Playgroud)