From 5eef4a64e666922ca564ac280b2aba90b86550e8 Mon Sep 17 00:00:00 2001 From: keita Date: Sat, 23 Apr 2022 20:56:20 +0900 Subject: [PATCH] =?UTF-8?q?%=E3=82=A8=E3=83=B3=E3=82=B3=E3=83=BC=E3=83=89?= =?UTF-8?q?=E3=82=92=E8=A7=A3=E9=99=A4=E3=81=99=E3=82=8Butil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/cocoatweet/util/util.cc | 28 ++++++++++++++++++++++++++++ src/cocoatweet/util/util.h | 1 + 2 files changed, 29 insertions(+) diff --git a/src/cocoatweet/util/util.cc b/src/cocoatweet/util/util.cc index 5fe81c2..74e0cb6 100644 --- a/src/cocoatweet/util/util.cc +++ b/src/cocoatweet/util/util.cc @@ -22,6 +22,34 @@ std::string urlEncode(const std::string& _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(static_cast(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 _vec, const std::string& _delim) { std::string str(""); diff --git a/src/cocoatweet/util/util.h b/src/cocoatweet/util/util.h index 5392b7d..a3cddfd 100644 --- a/src/cocoatweet/util/util.h +++ b/src/cocoatweet/util/util.h @@ -8,6 +8,7 @@ namespace CocoaTweet::Util { std::string urlEncode(const std::string& _str); +std::string urlDecode(const std::string& _str); std::string join(const std::vector _vec, const std::string& _delim); std::unordered_map parse(const std::string str, const char _delim, const char _conn);