How to create a new folder using boost when a folder with the same name already exists?
24,126
It should be easy to accomplish what you want without using anything platform specific...
std::string dstFolder = "New Folder";
std::string path(dstFolder);
/*
* i starts at 2 as that's what you've hinted at in your question
* and ends before 10 because, well, that seems reasonable.
*/
for (int i = 2; boost::filesystem::exists(path) && i < 10; ++i) {
std::stringstream ss;
ss << dstFolder << "(" << i << ")";
path = ss.str();
}
/*
* If all attempted paths exist then bail.
*/
if (boost::filesystem::exists(path))
throw something_appropriate;
/*
* Otherwise create the directory.
*/
boost::filesystem::create_directory(path);
Comments
-
progammer almost 4 years
I am using
boost::filesystem
to create an empty folder (in Windows). Let say that the name of the folder that I want to create is New Folder. When I run the following program, a new folder with the required name is created, as expected. When the run the program for the second time, I want New Folder (2) to be created. Though it is an unreasonable expectation, that is what I want to achieve. Can someone guide me?#include <boost/filesystem.hpp> int main() { boost::filesystem::path dstFolder = "New Folder"; boost::filesystem::create_directory(dstFolder); return 0; }
Expected output:
-
zett42 almost 7 yearsYou need to check whether folder exists and manually generate new names ... and what exactly prevents you from doing that using boost?
-
user7860670 almost 7 years@zett42 I assume that by using boost people mean calling this boost function. Of course nothing prevents someone from implementing such function himself.