c++ - mkdir 和 ofstream 的问题

标签 c++ cygwin mkdir ofstream

这是我第一次使用目录。

我有这个代码片段:

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/

相关文章:

c++ - 与 std::memcmp 或 string::compare 进行子串比较?

C++ 数组 [索引] 与索引 [数组]

c++ - 从 std::vector<glm::vec3> 获取一个 float 类型的数组指针

c - 在C中初始化指向NULL的指针

python - os.path.join - 我可以获得 Windows 和 Cygwin 之间的一致性吗?

linux - mkdir 中的详细选项是什么?

linux - mkdir选项不清楚

c++ - Visual C++ 给我 400 多个错误?

linux - 困惑 - 我真的有哪个外壳?

linux - 如何创建一个子目录,该子目录是格式为 YYYMMDDHHMMSS 的日期时间戳?