【问题标题】:C++ get directory prefixC++ 获取目录前缀
【发布时间】:2011-09-13 06:15:11
【问题描述】:

例如我有字符串"root/data/home/file1.txt" 我想得到"root/data/home" C++ 中是否有一个方便的函数可以让我这样做,或者我应该自己编写代码?

【问题讨论】:

    标签: c++ string directory


    【解决方案1】:

    这是相当依赖于平台的。例如,Windows 使用'\' 作为路径分隔符(大部分),Unix 使用'/',MacOS(OSX 之前)使用':'

    Windows 特定的 API 是 PathRemoveFileSpec

    【讨论】:

      【解决方案2】:

      您可以进行基本的字符串操作,即

      std::string path = "root/data/home/file1.txt";
      // no error checking here
      std::string prefix = path.substr(0, path.find_last_of('/'));
      

      或采取第三个选项,例如Boost.Filesystem

      namespace fs = boost::filesystem;
      fs::path path = "root/data/home/file1.txt";
      fs::path prefix = path.parent_path();
      

      【讨论】:

      • +1 用于提及 boost,它将适用于不同的平台
      【解决方案3】:

      语言本身当然没有方便的功能。字符串库提供find_last_of,应该做的不错。

      【讨论】:

        【解决方案4】:

        如果您使用的是 POSIX 系统,请尝试 dirname(3)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-11
          • 1970-01-01
          • 2019-02-18
          • 2014-04-28
          • 2012-05-29
          • 2013-01-29
          相关资源
          最近更新 更多