Strings verarbeiten
-
hi,
also erstmal ein beispiel zur verständnis:
string = "das.ist.ein.test" func(string,".",0) = 4 // wieviele wörter durch punkte getrennt werden func(string,".",1) = das // erstes wort was mit den punkt getrennt wird func(string,".",1-3) = das.ist.ein // gibt die ersten 3 wörter aus die getrennt sind mit punktenalso meine frage ist, gibt es so eine funktion oder eine ähnliche?
und wenn nicht, aus welchen funktionen könnte ich mir sie zusammen basteln?
-
hmm gibt es nicht ....
func(".", "Das.ist.ein.Test!") = 4
std::string test("Das.ist.ein.Test"); std::size_t count = std::count_if(test.begin(), test.end(), std::bind2nd(std::equal_to<char>(), '.')); if (test.at(test.length() - 1) == '.')--count; if (test.at(0) == '.')--count;könnte aber gehen ...
-
func(string,".",1) = das
std::string test("Das.ist.ein.Test"); std::string result = test.substr(test.find_first_not_of('.'), test.find_first_of('.'));...
-
std::size_t count_words(const std::string& string, char iterator = ' ') { std::size_t count = std::count_if(string.begin(), string.end(), std::bind2nd(std::equal_to<char>(), iterator)); if (string.at(string.length() - 1) == iterator) --count; if (string.at(0) == iterator) --count; return --count; }Könntest jetzt noch hingehen und eine Kopie von string anlegen. Daraus dann alle direkt auf einander folgenden '.' rauslöschen, so das nur einer davon übrig bleibt ...
std::string& split_word(const std::string& string, std::size_t start = 0, std::size_t end = 1, char iterator = ' ') { std::size_t tmp_beg = 0; for (std::size_t pos = 0; pos < beg; ++pos) tmp_beg = string.find_first_of(iterator, tmp + 1); std::size_t tmp_end = 0; for (std::size_t pos = 0; pos < end; ++pos) tmp_end = string.find_first_of(iterator, tmp + 1); return string.substr(tmp_beg, tmp_end - tmp_beg); }Das kann dann beides
(die letzten beiden Fragen)std::string test("Das.ist.ein.Test!"); std::cout << split_word(test, 0, 1, '.') << std::endl; std::cout << split_word(test, 0, 3, '.') << std::endl;...