【问题标题】:C++ system mkdir with path带路径的 C++ 系统 mkdir
【发布时间】:2015-10-15 18:05:03
【问题描述】:

在这里遇到了一个小障碍。我正在尝试使用由正在使用的函数创建的变量目录名称在另一个目录中创建一个目录。基本上,我想将任何创建的帐户存储在一个名为 accounts 的目录中,该目录与其他所有内容分开。这是我的功能:

system(("mkdir -p /home/user/Program/accounts"+accname).c_str());

我遇到的问题是它在 Programs 中将目录创建为 accounts(accname) 而不是在以 accname 为目录的帐户中创建。

accname = tim 的示例目前看起来像 Program 内部的 accountstim,而不是帐户内部的 tim。

【问题讨论】:

  • 为什么不使用 mkdir 系统调用?
  • 如果您可以使用experimental/filesystem,请告诉我,我会写给您最佳答案。 (我说最好的原因是如果filesystem 应该成为大约 C++17 正式标准的一部分,那么您的代码将是跨平台的。

标签: c++ path system mkdir


【解决方案1】:

您正在传递 -p 标志,这将创建您尚未拥有的所有目录,因此您走在正确的轨道上。

您需要添加另一个斜杠才能获得新目录。如果没有这个额外的斜杠,字符串末尾的任何内容都会成为帐户目录的一部分,而不是新目录的名称:

system(("mkdir -p /home/user/Program/accounts/"+accname).c_str()); // note the slash after accounts!

这会解决你的问题,但我建议不要使用 system 函数

编辑:使用 mkdir 仅适用于运行 POSIX 系统或其他提供 mkdir 功能的系统。如果你在 Windows 上,我不知道该怎么做。

建议改用 mkdir 系统调用。如果您只创建一个目录,则 mkdir 函数调用应该相对简单。如果你正在运行 Linux,你可以阅读它here

【讨论】:

  • 我正在使用 linux,直接答案和链接都非常有帮助。虽然我必须承认在看到额外的 / 之后我的脸有点偏。我应该尝试过并且不知道,但事后它是完全有道理的。
猜你喜欢
  • 1970-01-01
  • 2012-03-27
  • 2012-04-18
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
  • 1970-01-01
相关资源
最近更新 更多