Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        3年前关闭。
                                                                                            
                
        
我想在声明全局数组之前计算数据文件的行数。我知道在终端中是否执行wc -l filename,我得到了行数。如何使用该命令(wc -l filename)并将其结果存储到c ++程序内的int类型变量中?当我使用以下代码时:
 int NT=system(" wc -l file.d");
我得到NT=0.

如何获得编号。 NT中file.d中的行数?

最佳答案

获取文件中行数的一种方法是使用getline:

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

int main()
{
    fstream in("file.d");
    int lines = 0;
    string s;
    while (getline(in, s))
    {
        ++lines;
    }
    cout << lines << endl;
    return 0;
}


编辑...

如Matteo Italia所指出的,一种更有效的方法(如果您只想计数而又不想使用任何数据)是使用istream :: ignore。

#include <fstream>
#include <iostream>
#include <limits>
using namespace std;

int main()
{
    fstream in("in.txt");
    int lines = 0;
    char endline_char = '\n';
    while (in.ignore(numeric_limits<streamsize>::max(), in.widen(endline_char)))
    {
        ++lines;
    }
    cout << lines << endl;
    return 0;
}


两种方法都将在名为“ file.d”的文件中输出行数。您可以将其输出与“ wc -l”的输出进行比较。

关于c++ - 在C++程序中执行行计数bash命令(wc -l),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39518689/

10-14 03:20