У меня есть std::ostringstream. Я хотел бы выполнить итерацию для каждой строки этого std::ostringstream.
Я использую boost::tokenizer :
std::ostringstream HtmlStream;
.............
typedef boost::tokenizer<boost::char_separator<char> > line_tokenizer;
line_tokenizer tok(HtmlStream.str(), boost::char_separator<char>("\n\r"));
for (line_tokenizer::const_iterator i = tok.begin(), end = tok.end(); i != end; ++i)
{
std::string str = *i;
}
На линии
for (line_tokenizer::const_iterator i = tok.begin(), end = tok.end(); i != end;
У меня есть ошибка утверждения с «несовместимым строковым итератором». Я читал об этой ошибке в Google и в StackOverflow, но мне трудно найти свою ошибку.
Кто-нибудь может мне помочь, пожалуйста?
Большое спасибо,
С наилучшими пожеланиями,
Никсеус
str()
вistringstream
и использоватьstd::getline()
? - person Chad   schedule 03.12.2013std::istringstream
, инициализированный вашей строкой, а затем использовать с нимstd::getline()
так же, как и файловый поток. Это позволит избежать использования Boost в целом. Это может сработать для вас, но оно не может делать все, что может делатьboost::tokenizer
(например, игнорировать последовательные символы-разделители). - person Fred Larson   schedule 03.12.2013