如何从 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
。
如果我使用像 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
。