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

问题描述 投票:0回答:1

如果我使用像

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里面有没有方法

c++ c++17 std-filesystem
1个回答
27
投票

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

在路径

p
上进行流输入或输出。使用
std::quoted
以便稍后由流输入运算符读取时空格不会导致截断。

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

path::string()
:

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

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

我还删除了

fs::
,因为
absolute
可以通过 ADL 找到。

© www.soinside.com 2019 - 2024. All rights reserved.