我正在编写一些 C++ 代码,我需要根据文件的内容预先分配一个数组。我绝对可以读取文件并以某种方式解析字符串,但是从以下 Linux 单行中找到正确的数字一定更容易:
cat myfile.txt | grep 'Freqs ---' | sed 's/Freqs ---//g' | wc -w
在 C++ 代码中对文件使用这一单行的最佳方法是什么?
原文由 drjrm3 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可能想要 popen()
但这些方法并不是那么便携。
这是我在 misc/C/
子目录中的 21 岁 (!!) 片段:
/* edd 01.11.95 write pipe to "wc" command */
#include <stdlib.h>
#include <stdio.h>
int main() {
FILE *pipe;
pipe = popen("wc", "w");
fprintf(pipe, "w\n");
fprintf(pipe, "wc\n");
pclose(pipe);
return 0;
}
您也可以从管道中读取(就像从文件中读取一样),然后使用 fscanf()
来读取您的答案。
原文由 Dirk Eddelbuettel 发布,翻译遵循 CC BY-SA 3.0 许可协议
7 回答5.3k 阅读
3 回答2k 阅读✓ 已解决
4 回答4k 阅读
2 回答3.9k 阅读✓ 已解决
2 回答5.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
使用
popen
来自<stdio.h>
:popen
的返回值是标准 I/O 流,就像fopen
返回的一样。但是,您应该使用pclose
而不是fclose
来关闭流。