如何从std :: filesystem ::路径中删除引号

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

本文关键字:删除 路径 filesystem std      更新时间:2023-10-16

如果我使用诸如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

而不是。

手动执行它是没有问题的,但是我想询问文件系统lib内部是否有一种方法。

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

在路径p上执行流输入或输出。使用std::quoted,以便稍后通过流输入操作员读取空间不会引起截断。

因此,流动路径时的预期行为是预期的。您需要的是path::string()

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

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

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