我正在开发一个Windows VC ++ 2008项目,并尝试使用fileIO将东西放在子目录中的日志文件中。我正在做以下事情:
void MessageQueue::LogOut(thingEnum _thing){
std::ofstream Output;
Output.open("Output/MainLog.txt", std::ios::app);
if (Output.is_open()){
// writing stuff
}
Output.close();
}
我知道ios :: app会生成一个文件,但是它也不能生成文件夹,或者我是否需要一个不同的命令来生成文件存在的文件夹。当我得到摆脱代码中的子目录它工作正常,如果我创建文件夹,我可以把子目录代码。.. / / p>
注意:我理解我应该在技术上打开文件缓冲区,与创建流对象的行相同。我没有,因为我打算将.open放入一个案例开关(_thing)来访问多个文件,只需更改流。
答案 0 :(得分:2)
std :: ofstream无法创建目录,标准C ++也没有支持这样做。您可以使用boost.Filesystem:create_directories,或者在POSIX系统上使用POSIX函数mkdir()。您可以在this StackOverflow question了解更多解决方案。
答案 1 :(得分:1)
您可以在调用open之前使用_mkdir函数。
http://msdn.microsoft.com/en-us/library/2fkk4dzw(v=vs.90).aspx
#include <direct.h>
void MessageQueue::LogOut(thingEnum _thing){
if (_mkdir("Output\\") == 0) {
std::ofstream Output;
Output.open("Output\\MainLog.txt", std::ios::app);
if (Output.is_open()){
// writing stuff
}
Output.close();
}
else {
// could not create directory
}
}
答案 2 :(得分:0)
在Windows上使用CreateDirectory调用来创建文件夹。