Если при написании return ss.str;
вы намереваетесь вызвать функцию-член str
из std::stringstream
, то вам не хватает пары скобок:
return ss.str();
Кроме того, ваш код, вероятно, выиграл 'делать то, что вы ожидаете.Если вы хотите, чтобы каждый вызов addup
работал на одном и том же экземпляре std::stringstream
, вы должны взять его по ссылке: измените подпись addup
и добавьте boost::ref()
вокруг параметра ss
в boost::bind
.
Вот рабочая версия, которая, как я полагаю, делает то, что вы ожидаете:
void addup(std::string str, std::stringstream &ss)
{
ss << str;
ss << ";";
}
int main()
{
std::vector<std::string> temp_results;
/* ... */
std::stringstream ss;
std::for_each(temp_results.begin(), temp_results.end(), boost::bind(addup, _1, boost::ref(ss)));
std::cout << ss.str() << std::endl;
}
Альтернатива с использованием boost::lambda
:
std::for_each(temp_results.begin(), temp_results.end(), ss << boost::lambda::_1 << ';');