Dzielenie stringa

0

Witam, załóżmy ze posiadam stringa którego zawartość wygląda tak "ziemniak jabłko pietruszka pomidor", chciałbym wydobyć wszystkie wyrazy do vectora string. Myślałem żeby zrobić to za pomocą getline(), ale nie chce on jako "źródła" brać stringa. Czy istnieje jakiś łatwy sposób aby wydobyć ze stringa inne stringi?

2

no tak, ciężko napisać w google "c++ string split"

http://stackoverflow.com/questions/236129/splitting-a-string-in-c

0
#include <sstream>
....
istringstream is(twojStringZWielomaWyrazami);
vector<string> maleStringi;
string malyString;
while (is >> malyString) {
  maleStringi.push_back(malyString); // std::move(malyString) jesli c++11
}

WARNING: jesli zalezy Ci na wydajnosci to nie uzywaj strumieni C++owych bo sa w cholere wolne

0

@krwq: strumienie w C++ po wyłączeniu synchronizacji z stdio już tak wolne nie są.

Można jeszcze prościej:

std::string str = "ziemniak           jabłko        pietruszka        pomidor";
std::vector<string> out;
std::copy(std::istream_iterator<string>(std::istringstream(str)), std::istream_iterator<string>(), std::back_inserter(out));
0

@byku_guzio sa wolne, da sie to duzo szybciej to zrobic inaczej. kiedys testowalem wydajnosc i wyszlo na to ze wszystko jest szybsze od strumieni c++

1 użytkowników online, w tym zalogowanych: 0, gości: 1