Globbing in C++/C, on Windows

Paul Nathan picture Paul Nathan · Aug 13, 2009 · Viewed 11.5k times · Source

Is there a smooth way to glob in C or C++ in Windows?

E.g., myprogram.exe *.txt sends my program an ARGV list that has...ARGV[1]=*.txt in it.

I would like to be able to have a function (let's call it readglob) that takes a string and returns a vector of strings, each containing a filename.

This way, if I have files a.txt b.txt c.txt in my directory and readglob gets an argument *.txt, it returns the above filelist.

//Prototype of this hypothetical function.
vector<string> readglob(string);

Does such exist?

Answer

Michael Burr picture Michael Burr · Aug 13, 2009

Link with setargv.obj (or wsetargv.obj) and argv[] will be globbed for you similar to how the Unix shells do it:

I can't vouch for how well it does it though.