C++ C++;对文件夹中的所有文件执行相同的代码
我上网已经很长时间了,我甚至没有找到解决这个问题的办法。对不起,如果这对专家来说是微不足道的C++ C++;对文件夹中的所有文件执行相同的代码,c++,boost,directory,C++,Boost,Directory,我上网已经很长时间了,我甚至没有找到解决这个问题的办法。对不起,如果这对专家来说是微不足道的 我有一个C++代码,它把二进制文件作为输入参数,然后进行一些计算,输出一个 .cv文件。 因此,我一直在使用命令行在一个或多个文件上执行代码,如下所示 MyProgram filename1 filename2 就我而言,我的所有文件从filename1到filenameN都在一个特定的文件夹中。 我想知道是否有任何方法可以输入文件夹名,这样程序就可以在包含的所有文件上执行 也许是这样的 Mypro
我有一个C++代码,它把二进制文件作为输入参数,然后进行一些计算,输出一个<代码> .cv文件。 因此,我一直在使用命令行在一个或多个文件上执行代码,如下所示
MyProgram filename1 filename2
就我而言,我的所有文件从filename1
到filenameN
都在一个特定的文件夹中。
我想知道是否有任何方法可以输入文件夹名,这样程序就可以在包含的所有文件上执行
也许是这样的
Myprogram /Users/Whatever
或者在像这样的窗口中
Myprogram C:\User\Whatever
提前感谢对于linux,您可以使用带有通配符参数的命令行,例如:
YourProgram path/to/*.csv
,您将获得与模式path/to/*.csv
匹配的所有文件
如果是windows,您可以使用一些Win API,如解析通配符并获取所有匹配文件: 对于linux,您可以使用带有通配符参数的命令行,例如:
YourProgram path/to/*.csv
,然后将与模式path/to/*.csv
匹配的所有文件放入argv数组中
如果是windows,您可以使用一些Win API,如解析通配符并获取所有匹配文件: 在基于*nix的控制台上,“xargs”命令是您的朋友。e、 g
find./MyDirectory-name“*.notcsv”| xargs myprogram
就我个人而言,我不会修改代码本身来遍历文件,因为操作系统提供了一种机制。它使您的程序更“单一责任”。如果您将输出发送到stdout/cout,它允许您的程序在必要时与其他文本处理命令链接
为基于*nix的控制台干杯然后“xargs”命令就是你的朋友。e、 g
find./MyDirectory-name“*.notcsv”| xargs myprogram
就我个人而言,我不会修改代码本身来遍历文件,因为操作系统提供了一种机制。它使您的程序更“单一责任”。如果您将输出发送到stdout/cout,它允许您的程序在必要时与其他文本处理命令链接
Cheers考虑在代码中使用循环?用于迭代给定目录。C++17将有一个文件系统作为
std
@CinCout的一部分。我不知道从代码内部使用循环如何帮助读取文件夹中未知数量的文件。你能给我一些建议吗?@WhiZTiM我试着安装boost并配置它。但我以更复杂的问题结束。比如找不到文件或者类似的东西(架构x86_64的未定义符号)。我现在更迷路了!是否考虑在代码中使用循环?用于迭代给定目录。C++17将有一个文件系统作为std
@CinCout的一部分。我不知道从代码内部使用循环如何帮助读取文件夹中未知数量的文件。你能给我一些建议吗?@WhiZTiM我试着安装boost并配置它。但我以更复杂的问题结束。比如找不到文件或者类似的东西(架构x86_64的未定义符号)。我现在更迷路了!谢谢你的回答。谢谢你的回答。但是,正如我在问题中提到的,我所有的文件都是二进制文件,所以它们没有任何扩展名。当我尝试linux的通配符时,它只读取第一个文件。在linux上,您将在argv[1]
中获得第一个arg,在argv[2]
中获得第二个arg,依此类推。您需要循环(i=1;iThanks)的所有参数。谢谢您的回答。但是,正如我在问题中提到的,我的所有文件都是二进制文件,因此它们没有任何扩展名。当我尝试linux的通配符时,它只读取第一个文件。在linux上,您将在argv[1]中获得第一个参数
argv[2]
中的第二个,依此类推。您需要循环(i=1;i)的所有参数