如何从 std::filesystem::path 中删除引号

How to remove quotation marks from std::filesystem::path

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

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

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

returns:

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

我需要

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

相反。

手动是没有问题的,但是想问下文件系统lib里面有没有方法

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

Performs stream input or output on the path p. std::quoted is used so that spaces do not cause truncation when later read by stream input operator.

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

Returns the internal pathname in native pathname format, converted to specific string type.

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

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