这是我第一次使用目录。
我有这个代码片段:
void initialize()
{
mkdir("/cydrive/c/enc/user", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
mkdir("/cygdrive/c/enc/misc", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
ofstream user ("/cygdrive/c/enc/misc/usercount.txt");
if (user.is_open())
user << "0 0" << endl;
user.close();
ofstream prompt ("/cygdrive/c/enc/misc/prompt.txt");
if (prompt.is_open())
prompt << "CLI>";
prompt.close();
ofstream randomuser ("/cydrive/c/enc/user/rando.txt");
if (randomuser.is_open())
randomuser << "garbageinfo";
randomuser.close();
}
streams 的用户和提示的行为完全符合我的预期,但每当我尝试打开 enc/user 目录时,它根本就打不开。这种不一致让我发疯,知道发生了什么吗?
最佳答案
我怀疑 mkdir()
失败是由于目录名称中的拼写错误。我认为:
mkdir("/cydrive/c/enc/user", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
应该是:
mkdir("/cygdrive/c/enc/user", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
^
如果没有,检查mkdir()
的返回值,确保成功:
if (0 != mkdir("/cydrive/c/enc/user", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) &&
EEXIST != errno)
{
std::cerr << "Failed to create directory: "<< strerror(errno) << "\n";
}
关于c++ - mkdir 和 ofstream 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9479667/