mkdir和ofstream出现问题

Trouble with mkdir and ofstream

本文关键字:问题 ofstream mkdir      更新时间:2023-10-16

这是我第一次使用目录。

我有这个代码片段:

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();
}

流的用户和提示的行为完全符合我的意愿,但每当我试图打开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";
}