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

时间:2013-01-08 02:48:29

标签: c++ boost c++11

问题1:我想删除file://中URI的“boost::filesyetem::path”部分而不先转换为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除了应用于字符串以外有什么用处?

1 个答案:

答案 0 :(得分:1)

boost::filesystem::path 不是一个字符数组。您不能迭代path中的字符,也不能假设所包含的字符串位于任何特定的编码中。将path存储为std::vector<SomeStringType>是完全合法的,其中向量的每个元素都是路径的元素。

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