我手头有一个boost::filesystem::path,我想在上面附加一个字符串(或路径)。

boost::filesystem::path p("c:\\dir");
p.append(".foo"); // should result in p pointing to c:\dir.foo

唯一的boost::filesystem::path重载append要两个InputIterator

到目前为止,我的解决方案是执行以下操作:
boost::filesystem::path p2(std::string(p.string()).append(".foo"));

我想念什么吗?

最佳答案

#include <iostream>
#include <string>
#include <boost/filesystem.hpp>


int main() {
  boost::filesystem::path p (__FILE__);

  std::string new_filename = p.leaf() + ".foo";
  p.remove_leaf() /= new_filename;
  std::cout << p << '\n';

  return 0;
}

使用1.37测试,但是leaf和remove_leaf也记录在1.35中。您需要先测试p的最后一个组成部分是否是文件名(如果不是)。

关于c++ - 附加到boost::filesystem::path,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2396548/

10-11 22:50
查看更多