【问题标题】:Is there better way to create directory from string? cpp, create directory, stringstream, string.有没有更好的方法从字符串创建目录? cpp,创建目录,字符串流,字符串。
【发布时间】:2016-04-29 07:21:27
【问题描述】:

我的代码正在运行,但我认为这是一种糟糕的方式。 (使用 system() 存在安全问题,并且仅仅因为 ss.str() 不被接受而创建字符串)。你知道更好的方法吗?

    stringstream ss;
    string dir;

    // make dir output
    ss.str(""); // set  empty
    ss.clear(); // clear bit flags
    ss << "mkdir \"" << argv[2] << "\"";
    dir = ss.str();
    system(dir.c_str());

argv[2] 来自:int main (int argc, char *argv[]) {...

有更好的想法吗?

【问题讨论】:

  • 试试 boost::filesystem
  • 没有创建目录的标准方法。在 Windwos 中,我们使用 CreateDirectory。要构建路径字符串,请使用makepath
  • 我目前在 linux 上,但是谢谢,我通常在 windows 上工作。看起来很有用。

标签: c++ string directory stringstream


【解决方案1】:

您应该使用提供该功能的可移植 Boost.Filesystem 库 create_directory 或使用您的目标环境提供的设施,例如适用于 Linux 的 POSIX 函数 mkdir

Boost 还提供了创建路径的功能,只需在参考中四处查看即可找到所需的内容。

使用system 命令是个坏主意。


如果您和您的教授使用 MSVC 2015 或 gcc5.3 或更新版本,您可能可以使用 C++1z 的create_directory 的实验性实现。它基于 Boost,但支持的范围更广。

【讨论】:

  • 谢谢。我知道提升非常好:)。但是,如果我的教授想要编译它,他将需要 boost ...。这就是为什么我在寻找简单的东西。
  • @Kvader 没有标准的方法,你要么使用像 Boost 这样的可移植的东西,要么使用像 POSIX 这样的系统依赖工具,或者等到 2017 年 C++ 应该获得文件系统支持。实际上,一些非常新的编译器可能已经在实验的基础上支持这个,我会查一下。
  • 我有 gcc4.8.2 但我没有升级的管理权限。但是是的create_directory 是一个很好的解决方案。 (我希望至少更安全)。我期待着2017!我希望标准 c++ 中包含一些增强功能。非常感谢您的回答。可惜目前还没有标准的方法。我认为 boost 是最好的解决方案,但现在我必须这样做。
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 2014-10-03
  • 2012-11-27
  • 1970-01-01
  • 1970-01-01
  • 2013-04-21
  • 2021-02-02
相关资源
最近更新 更多