c++ - 用 C++ 计算文件行数的最简洁方法

标签 c++ linux unix line-numbers

计算文件行数的最简洁方法是什么? 我需要此信息来创建/初始化矩阵数据结构。

稍后我必须再次遍历文件并将信息存储在矩阵中。

更新:基于 Dave Gamble 的。但为什么这不能编译? 请注意,该文件可能非常大。所以我尽量避免使用容器 以节省内存。

#include <iostream>      
#include <vector>        
#include <fstream>       
#include <sstream>       
using namespace std;     


int main  ( int arg_count, char *arg_vec[] ) {
    if (arg_count !=2 ) {
        cerr << "expected one argument" << endl;
        return EXIT_FAILURE;      
    }

    string line;
    ifstream myfile (arg_vec[1]);

    FILE *f=fopen(myfile,"rb");
    int c=0,b;
    while ((b=fgetc(f))!=EOF) c+=(b==10)?1:0;
    fseek(f,0,SEEK_SET);


    return 0;
}

最佳答案

我认为这可能会...

std::ifstream file(f);
int n = std::count(std::istreambuf_iterator<char>(file), std::istreambuf_iterator<char>(), '\n') + 1;

关于c++ - 用 C++ 计算文件行数的最简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1225589/

相关文章:

c++ - QT 是在单独的线程中启动的slot

c++ - 带 flex 的正则表达式

linux - 这个linux命令相当于powershell的什么

c++ - 程序的内存使用量随着时间的推移而增加,但内存泄漏工具没有报告任何问题

python - Paramiko 在使用 ssh-keygen 命令时挂起

您可以使用 Windows 操作系统和 Dev-C++ IDE 为 Linux 编写 shell 吗? shell 在两种操作系统上的工作方式是否相同?

c++ - 具有重复的枚举器值

c++ - 如何调用外部 c 函数,而 GLUT 显示循环锁定我的 c++ main?

linux - 如何在 SED 中使用变量

unix - 如何在给定的时间间隔内运行 Unix 命令?