【发布时间】:2013-02-02 22:52:31
【问题描述】:
我创建了一个 Url Encoder 类,其工作是对 Url 进行编码或解码。
为了存储特殊字符,我使用了映射 std::map<std::string, std::string> reserved。
我已经像这样初始化了地图this->reserved["!"] = ":)";
为了从给定字符串中读取字符,我使用了迭代器for(string::iterator it=input.begin(); it!=input.end(); ++it)
现在,当我尝试使用替换函数 encodeUrl.replace(position, 1, this->reserved[*it]); 替换特殊字符时
我收到以下错误
Url.cpp:在成员函数'std::string Url::Url::UrlEncode(std::string)'中:
Url.cpp:69:54:错误:从“char”到“const char*”的无效转换 [-fpermissive]
/usr/include/c++/4.6/bits/basic_string.tcc:214:5: 错误:初始化 'std::basic_string<_chart _traits _alloc>::basic_string(const _CharT*, const _Alloc&) 的参数 1 [with _CharT = char, _Traits = std::char_traits, _Alloc = std::allocator]' [-fpermissive]
我不确定代码有什么问题。这是我的功能
string Url::UrlEncode(string input){
short position = 0;
string encodeUrl = input;
for(string::iterator it=input.begin(); it!=input.end(); ++it){
unsigned found = this->reservedChars.find(*it);
if(found != string::npos){
encodeUrl.replace(position, 1, this->reserved[*it]);
}
position++;
}
return encodeUrl;
}
【问题讨论】: