X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/237f834a52db0d12c85f70c5e65f48ec1923d00a..0df921108f5a3240db63336eddd3ab46bf80f424:/stglibs/common.lib/common.cpp diff --git a/stglibs/common.lib/common.cpp b/stglibs/common.lib/common.cpp index 425c3ee6..d0ff074c 100644 --- a/stglibs/common.lib/common.cpp +++ b/stglibs/common.lib/common.cpp @@ -47,6 +47,7 @@ #include +#include #include #include #include @@ -856,20 +857,16 @@ std::string res(val); return TrimR(TrimL(res)); } //--------------------------------------------------------------------------- -std::string ToLower(const std::string & value) +std::string ToLower(std::string value) { - std::string res; - for (std::string::size_type pos = 0; pos < value.length(); ++pos) - res += tolower(value[pos]); - return res; + std::transform(value.begin(), value.end(), value.begin(), ::tolower); + return value; } //--------------------------------------------------------------------------- -std::string ToUpper(const std::string & value) +std::string ToUpper(std::string value) { - std::string res; - for (std::string::size_type pos = 0; pos < value.length(); ++pos) - res += toupper(value[pos]); - return res; + std::transform(value.begin(), value.end(), value.begin(), ::toupper); + return value; } //--------------------------------------------------------------------------- #ifdef WIN32 @@ -1099,3 +1096,16 @@ while (done < size) } return true; } + +std::string ToPrintable(const std::string & src) +{ + std::string dest; + + for (size_t i = 0; i < src.size(); ++i) + if (std::isprint(src[i])) + dest += src[i]; + else + dest += "\\" + x2str(src[i]); + + return dest; +}