C ++在文件夹中的所有文件上执行相同的代码

时间:2016-10-19 10:38:31

标签: c++ boost directory

我一直在网上冲浪很长时间,我甚至没有接近任何解决方案。对不起,如果对专家来说似乎微不足道。

我有一个C ++代码,它将二进制文件作为输入参数,然后进行一些计算然后输出.csv文件。 所以,我一直在使用命令行在一个或多个文件上执行代码,如下所示

MyProgram filename1 filename2 

就我而言,我的所有文件都来自特定文件夹中的filename1filenameN。 我想知道是否有任何方法可以输入文件夹名称,因此程序将在所有包含的文件上执行。

也许是这样的

Myprogram /Users/Whatever

或在像

这样的窗口中
Myprogram C:\User\Whatever

提前致谢

2 个答案:

答案 0 :(得分:1)

对于linux,您可以使用带有狂野字符参数的命令行,例如:YourProgram path/to/*.csv,并且您将所有文件与模式path/to/*.csv匹配到argv数组中。

如果是Windows,您可以使用一些Win API,如FindFirstFileFindNextFile来解析通配符并获取所有匹配文件。 you can also check this example

答案 1 :(得分:1)

在基于* nix的控制台上,“xargs”命令是你的朋友。例如

find ./MyDirectory -name "*.notcsv" | xargs myprogram

就个人而言,我不会修改代码本身来迭代文件,因为操作系统提供了一种机制。它使您的计划更“单一责任”。如果将输出发送到stdout / cout,它允许程序在必要时与其他文本处理命令链接。

干杯