繁体   English   中英

在boost :: filesystem :: path中使用boost :: algorithm

[英]using boost::algorithm in boost::filesystem::path

问题1:我想在boost::filesyetem::path删除URI的“ file:// ”部分,而不先转换为std::string 可以使用boost::algorithm::replace_first算法编写此代码吗?

我尝试了以下操作,但无法编译。

std::string s("file://"), empty("");
boost::filesystem::path path = oldPath.generic_string();
boost::algorithm::replace_first(path.generic_string(), s, empty);

编译错误:

cannot convert parameter 2 from 'std::_String_const_iterator<std::_String_val<std::_Simple_types<char>>>' to 'std::_String_iterator<std::_String_val<std::_Simple_types<char>>>'    

问题2: boost::algorithm除了应用于字符串外,还有什么用?

boost::filesystem::path 不是字符数组。 您不能遍历path字符,也不能假定所包含的字符串采用任何特定的编码。 path存储为std::vector<SomeStringType>绝对合法,其中向量的每个元素都是路径的元素。

简而言之, path不是字符容器;它不是字符容器。 这是一个特殊的对象。 如果需要将路径信息存储在字符容器中,则需要将其转换为这样的容器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM