问题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
除了应用于字符串以外有什么用处?
答案 0 :(得分:1)
boost::filesystem::path
不是一个字符数组。您不能迭代path
中的字符,也不能假设所包含的字符串位于任何特定的编码中。将path
存储为std::vector<SomeStringType>
是完全合法的,其中向量的每个元素都是路径的元素。
简而言之,path
不是字符容器;这是一个特殊的对象。如果需要存储在字符容器中的路径信息,则需要将其转换为这样的容器。