%エンコードを解除するutil

This commit is contained in:
keita
2022-04-23 20:56:20 +09:00
parent 12d6061baf
commit 5eef4a64e6
2 changed files with 29 additions and 0 deletions
+28
View File
@@ -22,6 +22,34 @@ std::string urlEncode(const std::string& _str) {
return out.str(); return out.str();
} }
std::string urlDecode(const std::string& _str){
std::stringstream out;
int first = 0;
int last = _str.find_first_of('%');
while (first < _str.size()) {
if (last == std::string::npos) {
out << _str.substr(first);
break;
}
auto s = _str.substr(first, last - first);
auto encoded = _str.substr(last+1, 2); // %を飛ばし読みする
std::cout << encoded << std::endl;
auto c = static_cast<char>(static_cast<int>(strtol(encoded.c_str(), nullptr, 16)));
out << s << c;
first = last + 3;
last = _str.find_first_of('%', first);
}
return out.str();
}
std::string join(const std::vector<std::string> _vec, const std::string& _delim) { std::string join(const std::vector<std::string> _vec, const std::string& _delim) {
std::string str(""); std::string str("");
+1
View File
@@ -8,6 +8,7 @@
namespace CocoaTweet::Util { namespace CocoaTweet::Util {
std::string urlEncode(const std::string& _str); std::string urlEncode(const std::string& _str);
std::string urlDecode(const std::string& _str);
std::string join(const std::vector<std::string> _vec, const std::string& _delim); std::string join(const std::vector<std::string> _vec, const std::string& _delim);
std::unordered_map<std::string, std::string> parse(const std::string str, const char _delim, std::unordered_map<std::string, std::string> parse(const std::string str, const char _delim,
const char _conn); const char _conn);