edv:prg:cpp:example:trim
Trim
Führende Leerzeichen entfernen:
zuTrimmendeString.erase(0, zuTrimmendeString.find_first_not_of(" "));
Leerzeichen am Ende entfernen:
zuTrimmendeString.erase(zuTrimmendeString.find_last_not_of(" ") + 1);
Auf beiden Seiten:
posBegin = zuTrimmendeString.find_first_not_of(" "); posEnd = zuTrimmendeString.find_last_not_of(" "); zuTrimmendeString = zuTrimmendeString.substr(posBegin, posEnd - posBegin + 1);
Oder als Klasse mit statischen Methoden (hier nur ein Ausschnitt):
class stringutils { private: static const char* const WHITESPACE; static const char* const EMPTY; public: static const string::size_type npos; public: static string trim (const string& s, const char* trimChars = nullptr); static string trim_left (const string& s, const char* trimChars = nullptr); static string trim_right(const string& s, const char* trimChars = nullptr); }; const char* const stringutils::WHITESPACE = " \n\r\t"; const char* const stringutils::EMPTY = ""; const string::size_type stringutils::npos = string::npos; inline string stringutils::trim_left(const string& s, const char* trimChars) { size_t startpos = s.find_first_not_of(trimChars ? trimChars : WHITESPACE); return (startpos == string::npos) ? EMPTY : ((startpos == 0) ? s : s.substr(startpos)); } inline string stringutils::trim_right(const string& s, const char* trimChars) { size_t endpos = s.find_last_not_of(trimChars ? trimChars : WHITESPACE); return (endpos == string::npos) ? EMPTY : ((endpos == s.length() - 1) ? s : s.substr(0, endpos + 1)); } inline string stringutils::trim(const string& s, const char* trimChars) { size_t startpos = s.find_first_not_of(trimChars ? trimChars : WHITESPACE); if (startpos == string::npos) return EMPTY; size_t endpos = s.find_last_not_of(trimChars ? trimChars : WHITESPACE); if ((startpos == 0) && (endpos == s.length() - 1)) return s; return s.substr(startpos, endpos - startpos + 1); }
In der Boost-Library ist diese Funktionalität bereits enthalten.
Stand: 02.06.2015
— : Jürgen Kreick
EOF
edv/prg/cpp/example/trim.txt · Zuletzt geändert: 2020/01/11 01:23 von 127.0.0.1