带路径的 C++ 系统 mkdir
C++ system mkdir with path
运行 这里有点小问题。我正在尝试使用由正在使用的函数创建的可变目录名称在另一个目录中创建一个目录。基本上我想将任何创建的帐户存储在一个名为 accounts 的目录中,该目录与其他所有内容分开。这是我的功能:
system(("mkdir -p /home/user/Program/accounts"+accname).c_str());
我遇到的问题 运行 是它在程序中将目录创建为帐户 (accname),而不是在以 accname 为目录的帐户中创建目录。
accname = tim 的示例当前看起来像 Program 中的 accountstim 而不是 accounts 中的 tim。
您正在传递 -p 标志,这将创建您还没有的所有目录,所以您走在正确的轨道上。
您需要再添加一个斜线才能获得新目录。如果没有这个额外的斜杠,字符串末尾的任何内容都会成为帐户目录的一部分,而不是新目录的名称:
system(("mkdir -p /home/user/Program/accounts/"+accname).c_str()); // note the slash after accounts!
那会解决你的问题,但我建议不要使用 system
函数
编辑:仅当您是 运行 一个 POSIX 系统或提供 mkdir 功能的其他系统时才适用 mkdir。如果你在 windows 我不知道该怎么做。
建议改用 mkdir 系统调用。如果您只创建一个目录,则 mkdir 函数调用应该相对简单。如果你是 运行 Linux 你可以阅读它 here.
运行 这里有点小问题。我正在尝试使用由正在使用的函数创建的可变目录名称在另一个目录中创建一个目录。基本上我想将任何创建的帐户存储在一个名为 accounts 的目录中,该目录与其他所有内容分开。这是我的功能:
system(("mkdir -p /home/user/Program/accounts"+accname).c_str());
我遇到的问题 运行 是它在程序中将目录创建为帐户 (accname),而不是在以 accname 为目录的帐户中创建目录。
accname = tim 的示例当前看起来像 Program 中的 accountstim 而不是 accounts 中的 tim。
您正在传递 -p 标志,这将创建您还没有的所有目录,所以您走在正确的轨道上。
您需要再添加一个斜线才能获得新目录。如果没有这个额外的斜杠,字符串末尾的任何内容都会成为帐户目录的一部分,而不是新目录的名称:
system(("mkdir -p /home/user/Program/accounts/"+accname).c_str()); // note the slash after accounts!
那会解决你的问题,但我建议不要使用 system
函数
编辑:仅当您是 运行 一个 POSIX 系统或提供 mkdir 功能的其他系统时才适用 mkdir。如果你在 windows 我不知道该怎么做。
建议改用 mkdir 系统调用。如果您只创建一个目录,则 mkdir 函数调用应该相对简单。如果你是 运行 Linux 你可以阅读它 here.