【问题标题】:Trouble with mkdir and ofstreammkdir 和 ofstream 的问题
【发布时间】:2023-09-18 02:40:01
【问题描述】:

这是我第一次使用目录。

我有这个代码sn-p:

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 目录时,它根本不会打开。这种不一致让我发疯,知道发生了什么吗?

【问题讨论】:

    标签: c++ cygwin mkdir ofstream


    【解决方案1】:

    我怀疑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";
    }
    

    【讨论】:

    • 一百万谢谢你!我疲惫的眼睛无法捕捉到这么简单的东西。我会投票,但我对这些部分是全新的。
    • 如果解决了,您可以接受答案吗(通过单击答案旁边的勾号轮廓,请参阅*.com/faq)?