从 C++ 调用“cat”的简单方法?

drj*_*rm3 0 c++ linux cat

我正在编写一些 C++ 代码,我需要根据文件的内容预先分配一个数组。我绝对可以以某种方式读取文件并解析字符串,但是从以下 Linux 单行程序中找到正确的数字必须更容易:

cat myfile.txt | grep 'Freqs ---' | sed 's/Freqs ---//g' | wc -w
Run Code Online (Sandbox Code Playgroud)

在 C++ 代码中在文件上使用这个单行的最佳方法是什么?

Kyr*_*iev 6

使用popen<stdio.h>

FILE *fp;
char buffer[BUFFER_SIZE];

fp = popen("cat myfile.txt | grep 'Freqs ---' | sed 's/Freqs ---//g' | wc -w", "r");
if (fp != NULL)
{
    while (fgets(buffer, BUFFER_SIZE, fp) != NULL)
        printf("%s", buffer);
    pclose(fp);
}
Run Code Online (Sandbox Code Playgroud)

from 的返回值popen是一个标准的 I/O 流,就像fopen. 但是,您应该使用pclose而不是fclose关闭流。