我正在编写一些 C++ 代码,我需要根据文件的内容预先分配一个数组。我绝对可以以某种方式读取文件并解析字符串,但是从以下 Linux 单行程序中找到正确的数字必须更容易:
cat myfile.txt | grep 'Freqs ---' | sed 's/Freqs ---//g' | wc -w
Run Code Online (Sandbox Code Playgroud)
在 C++ 代码中在文件上使用这个单行的最佳方法是什么?
使用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关闭流。