mkdir这个函数可以创建单个文件,但是创建 多个还是个问题。
#include <boost/filesystem.hpp>
#include<string>
#include <iostream>
using namespace std;
using namespace boost::filesystem;
int main()
{
path lPtest("test2/hailong/sub1/sub3");
create_directories(lPtest);
}
这样就可以创建多级目录了,但必须保证是以"/"为分隔符,这个要注意。
当然最好加上检测:
#include <boost/filesystem.hpp>
#include<string>
#include <iostream>
using namespace std;
using namespace boost::filesystem;
int main()
{
path lPtest("test3/hailong1/sub1/sub3");
if (!exists(lPtest))
{
create_directories(lPtest);
cout << "create file:" << lPtest.string() << endl;
}
else
cout << "file exits" << endl;
}
其实还有更多的情况:
#include <boost/filesystem.hpp>
#include <boost/typeof/typeof.hpp>
#include<string>
#include <iostream>
using namespace std;
using namespace boost::filesystem;
void string_replace( std::string &strBig,string strsrc, string strdst )
{
std::string::size_type pos = 0;
std::string::size_type srclen = strsrc.size();
std::string::size_type dstlen = strdst.size();
while( (pos=strBig.find(strsrc, pos)) != std::string::npos )
{
strBig.replace( pos, srclen, strdst );
pos += dstlen;
}
}
int main()
{
path lPtest("test2//hailong1/sub");
string lPath = lPtest.string();
if (!exists(lPtest))
{
if (!create_directories(lPtest))
{
cout << "Create file failed" << endl;
return 0;
}
cout << "create file:" << lPtest.string() << endl;
}
else
{
cout << "file exits" << endl;
BOOST_AUTO(lPos,lPtest.begin());
while(lPos != lPtest.end())
{
cout << "[" << *lPos << "]";
++lPos;
}
}
}