10

如果我使用这样的函数,absolute()我总是会得到一个包含引号的路径。

文件系统函数中有没有办法删除这个引号,使其能够与例如 std::ifstream 一起使用?

  fs::path p2 { "./test/hallo.txt" };
  std::cout << "absolte to file : " << fs::absolute(p2) << std::endl;

返回:

"/home/bla/blub/./test/hallo.txt"

我需要

/home/bla/blub/./test/hallo.txt

反而。

手动做是没问题的,但是我想问一下filesystem lib里面有没有方法。

4

1 回答 1

18

std::operator << (std::filesystem::path const &)指定如下:

在路径 p 上执行流输入或输出。std::quoted用于使空格在以后由流输入运算符读取时不会导致截断。

因此,这是流式传输路径时的预期行为。你需要的是path::string()

以本机路径名格式返回内部路径名,转换为特定的字符串类型。

std::cout << "absolte to file : " << absolute(p2).string() << std::endl;
//                                               ^^^^^^^^^

我也删除了fs::,因为absolute可以通过 ADL 找到。

于 2017-04-27T13:50:14.807 回答