@pixik

Как можно разделить строку на массив токенов средствами stl?

Добрый день!
Хочу научиться обрабатывать средствами stl без велосипедов входные данные следующего вида: "1 2 3, 4".
Запускаю программу так:
echo "1 2 3, 4" | ./my_program
В программе я разделяю stdin строку на массив подстрок таким образом:
string std_in;
getline(cin, std_in);

stringstream ss( std_in );
vector<string> tokens;     
string token;

while(std::getline(ss, token, ',')) tokens.push_back(token);

Можно ли достичь того же результата (массива токенов из входной строки) меньшим количеством телодвижений используя stl как то умнее?

Изменение #1
string std_in;
getline(cin, std_in);

stringstream ss( std_in );
list<string> tokens;
string token;

while(std::getline(ss, token, ',')) tokens.push_back( token );
  • Вопрос задан
  • 718 просмотров
Решения вопроса 1
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
Можно использовать boost
#include<iostream>
#include<boost/tokenizer.hpp>
#include<string>

int main()
{
   std::string s = "hello, boost!";
   boost::char_separator<char> sep(", !");
   boost::tokenizer<boost::char_separator<char>> tok(s, sep);
   for(auto it = tok.begin(); it != tok.end(); it++) {
       std::cout << *it << std::endl;
   }
}

Это не stl, но решение хорошее
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы