Url のエンコードまたはデコードを行う Url Encoder クラスを作成しました。
特殊文字を保存するために、私は 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;
}