X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fhttp%2Futils.cpp;h=7e1037e693d42094679d59ec905375eb6cd81ffe;hb=HEAD;hp=2f13576166ba9b128f0a111a1e507a8cb645fb96;hpb=62ea6954a91568c900ad8155999bea264dfa72f3;p=libs%2Fnet.git diff --git a/source/http/utils.cpp b/source/http/utils.cpp index 2f13576..7e1037e 100644 --- a/source/http/utils.cpp +++ b/source/http/utils.cpp @@ -1,8 +1,8 @@ +#include "utils.h" #include #include #include #include -#include "utils.h" using namespace std; @@ -31,6 +31,7 @@ namespace Http { string urlencode(const string &str, EncodeLevel level) { string result; + result.reserve(str.size()); for(char c: str) { if(is_reserved(c, level)) @@ -44,6 +45,7 @@ string urlencode(const string &str, EncodeLevel level) string urlencode_plus(const string &str, EncodeLevel level) { string result; + result.reserve(str.size()); for(char c: str) { if(c==' ') @@ -104,16 +106,8 @@ string build_url(const Url &url) str += url.scheme+"://"; str += url.host; str += urlencode(url.path); - if(!url.query.empty()) - { - str += '?'; - str += url.query; - } - if(!url.fragment.empty()) - { - str += '#'; - str += url.fragment; - } + append(str, "?", url.query); + append(str, "#", url.fragment); return str; } @@ -135,9 +129,7 @@ string build_query(const Query &query) string str; for(const auto &kvp: query) { - if(!str.empty()) - str += '&'; - str += urlencode_plus(kvp.first); + append(str, "&", urlencode_plus(kvp.first)); str += '='; str += urlencode_plus(kvp.second); }