我创建了一个 Url Encoder 类,其工作是对 Url 进行编码或解码。
为了存储特殊字符,我使用了 map 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;
}