如果我使用像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
代替。
手动执行是没有问题的,但我想询问文件系统库中是否有方法。
答案 0 :(得分:7)
std::operator << (std::filesystem::path const &)
指定如下:
在路径p上执行流输入或输出。使用
std::quoted
以便在以后由流输入操作符读取空格时不会截断[sic]。
因此,这是流式传输路径时的预期行为。你需要的是path::string()
:
以本机路径名格式返回内部路径名,并转换为特定的字符串类型。
std::cout << "absolte to file : " << absolute(p2).string() << std::endl;
// ^^^^^^^^^
我还删除了fs::
,因为可以通过ADL找到absolute
。