0

问题 1:我想删除file://a 中 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 s 除了应用于字符串还有什么用?

4

1 回答 1

1

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

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

于 2013-01-08T02:54:56.113 回答