C++获取总文件行号

New*_*ile 6 c++ size numbers get line

是否有可用于获取总文件行号的函数C++,还是必须通过for循环手动完成?

#include <iostream>
#include <ifstream>

ifstream aFile ("text.txt");
if (aFile.good()) {
//how do i get total file line number?

}
Run Code Online (Sandbox Code Playgroud)

的text.txt

line1
line2
line3
Run Code Online (Sandbox Code Playgroud)

P0W*_*P0W 12

我这样做:

   ifstream aFile ("text.txt");   
   std::size_t lines_count =0;
   std::string line;
   while (std::getline(aFile , line))
        ++lines_count;
Run Code Online (Sandbox Code Playgroud)

或简单地说,

  #include<algorithm>
  #include<iterator>
  //...
  lines_count=std::count(std::istreambuf_iterator<char>(aFile), 
             std::istreambuf_iterator<char>(), '\n');
Run Code Online (Sandbox Code Playgroud)

  • [`std :: count`](http://en.cppreference.com/w/cpp/algorithm/count)变体的+1. (5认同)

Ola*_*che 10

没有这样的功能.可以通过读取整行来完成计数

std::ifstream f("text.txt");
std::string line;
long i;
for (i = 0; std::getline(f, line); ++i)
    ;
Run Code Online (Sandbox Code Playgroud)

关于范围,变量的注释i必须在外面for,如果要在循环后访问它.


您也可以阅读字符并检查换行符

std::ifstream f("text.txt");
char c;
long i = 0;
while (f.get(c))
    if (c == '\n')
        ++i;
Run Code Online (Sandbox Code Playgroud)