boost::filesystem::path
使用&
来转义路径字符串see demo中的引号:
std::cout << boost::filesystem::path("/R&D/Project \"boost\"") << std::endl;
打印"/R&&D/Project &"boost&""
。但是,对于std::filesystem::path
I see this:
在路径p上执行流输入或输出。使用std :: quoted以便以后在流输入操作符读取时不会截断空格。
此处来自std::quoted
:
escape - 用作转义字符的字符,默认为\
据此我可以说std::filesystem::path
将使用\
代替&
。
这是对的吗?如果是,为什么委员会决定改变这种行为?
奖金问题:是否有std::filesystem::path
可用的实施?似乎没有最新的GCC和clang提供<filesystem>
标题。
答案 0 :(得分:2)
Boost :: Filesystem相当陈旧,早于C ++ 14的quoted
。标准内部一致是完全合理的。继Boost之后只是次要问题。
答案 1 :(得分:1)
如果是,为什么委员会决定改变这种行为?
来自N3399,强调是我的:
Boost插入器输出引用的字符串,由提取器识别。 文件系统研究组中存在一种情绪,即提供带引号和/或转义的字符串操纵符作为字符串扩展名,这是一种比路径特定功能更好的解决方案。请参阅提案N3431,引用字符串库提案。
也就是说,文件系统研究小组认为使用quoted
字符串操纵器比使用path
奖金问题:std :: filesystem :: path的实现是否可用?似乎没有最新的GCC和clang提供标题。
AFAIK,g ++,clang,msvc等主要编译器都提供filesystem
作为<experimental/filesystem>
在命名空间std::experimental::filesystem
中的实验性功能。 gcc从版本5.3开始,你可以看到here,MSVC从VS2012获得它(它在VS2012和VS2013中是<filesystem>
,然后移到<experimental/filesystem>
和{{1} }在VS2015中)