我有一个使用MinGW C++编译器构建的应用程序,其工作方式类似于grep - acommand看起来像这样:
myapp -e '.*' *.txt
Run Code Online (Sandbox Code Playgroud)
在-e开关之后出现的东西是正则表达式,之后的东西是文件名模式.似乎MinGW自动扩展(在UNIX术语中为globs)命令行,因此我的正则表达式被破坏了.我发现,通过将全局变量_CRT_glob设置为零,我可以关闭此行为.对于bash和其他敏感的shell用户来说这很好,因为shell会扩展文件模式.cmd.exe但是对于MS 用户来说,我似乎必须自己扩展文件模式.
所以我的问题 - 有没有人知道一个用于部分命令行扩展的通配库(或MinGW中的工具)?我知道Windows CRT的_setargv功能,但它扩展了完整的命令行.请注意我已经看到了这个问题,但它确实没有解决部分扩展问题.
我最终使用条件编译为我的应用程序的Windows版本编写自己的globbing代码.这很简单,因为我有自己的CommandLine类,它封装了main()中的argc和argv.不过,我还是有兴趣听听其他解决方案.
我以前在Dev-cpp中使用过这种代码:
if((dh = opendir(folder)) !== false){
while((file = readdir(dh)) !== false){
// do my stuff
}
closedir(dh);
}
Run Code Online (Sandbox Code Playgroud)
但现在我使用MSVC++,我不知道如何在那里添加这些文件,我试图在那里复制dirent.h/dir.h/errno.h,但它给出了与这些文件中的另一个包含文件有关的另一个错误. .,通过查看文件,我看到mingw的东西,所以它的编译器相关?idk MSVC++使用什么编译器,但有可能在MSVC++中复制这些文件并让它工作吗?
我试图从MSDN查找一些代码,但它真的搞砸了,所以我希望我可以使用上面的这些功能...