diff options
| author | Thomas Fussell <thomas.fussell@gmail.com> | 2017-01-01 18:28:56 -0500 |
|---|---|---|
| committer | Thomas Fussell <thomas.fussell@gmail.com> | 2017-01-01 18:28:56 -0500 |
| commit | 32dd084deadecd726172b85239c30bbbf683f62b (patch) | |
| tree | 492044fa3bce12e930d6c565d92095d71fac68e5 /toolsrc/src/vcpkg_Strings.cpp | |
| parent | 937c246ac2aa6ec11a02d0cb36a4e50919842c8a (diff) | |
| parent | bc8cca82a297e37bf9dde387991c1d51618273b7 (diff) | |
| download | vcpkg-32dd084deadecd726172b85239c30bbbf683f62b.tar.gz vcpkg-32dd084deadecd726172b85239c30bbbf683f62b.zip | |
Merge branch 'master' of http://github.com/Microsoft/vcpkg
Diffstat (limited to 'toolsrc/src/vcpkg_Strings.cpp')
| -rw-r--r-- | toolsrc/src/vcpkg_Strings.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/toolsrc/src/vcpkg_Strings.cpp b/toolsrc/src/vcpkg_Strings.cpp index 19ba8595f..46a4b1855 100644 --- a/toolsrc/src/vcpkg_Strings.cpp +++ b/toolsrc/src/vcpkg_Strings.cpp @@ -4,9 +4,17 @@ #include <algorithm> #include <codecvt> #include <iterator> +#include <functional> +#include <cctype> namespace vcpkg {namespace Strings {namespace details { + // To disambiguate between two overloads + static const auto isspace = [](const char c) + { + return std::isspace(c); + }; + std::string format_internal(const char* fmtstr, ...) { va_list lst; @@ -85,4 +93,30 @@ namespace vcpkg {namespace Strings return output; } + + void trim(std::string* s) + { + s->erase(std::find_if_not(s->rbegin(), s->rend(), details::isspace).base(), s->end()); + s->erase(s->begin(), std::find_if_not(s->begin(), s->end(), details::isspace)); + } + + std::string trimmed(const std::string& s) + { + auto whitespace_back = std::find_if_not(s.rbegin(), s.rend(), details::isspace).base(); + auto whitespace_front = std::find_if_not(s.begin(), whitespace_back, details::isspace); + return std::string(whitespace_front, whitespace_back); + } + + void trim_all_and_remove_whitespace_strings(std::vector<std::string>* strings) + { + for (std::string& s : *strings) + { + trim(&s); + } + + strings->erase(std::remove_if(strings->begin(), strings->end(), [](const std::string& s)-> bool + { + return s == ""; + }), strings->end()); + } }} |
