Передача временного объекта istringstream в istream_iterator <string>
У меня есть вопрос о следующем коде, который токенизирует строку (разделяет токены пробелом).
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
int main()
{
string s="And I feel fine ...";
istringstream ss(s);
vector<string> tokens{istream_iterator<string>(ss),{}};
for(auto& elem: tokens)
cout << elem << endl;
}
Это прекрасно работает. С другой стороны, если я попытаюсь пройти временныйistringstream
Возражатьistream_iterator
(3-я строка внутриmain
), такие как
vector<string> tokens{istream_iterator<string>(istringstream(s)),{}};
Я получаю ошибку во время компиляцииerror: no matching conversion for functional-style cast from 'istringstream' (aka 'basic_istringstream<char>') to 'istream_iterator<string>'
Я полагаю, что это потому, что я не могу привязать временное значение к неконстантной ссылке на значение и конструкторуistream_iterator
принимает ссылку в качестве параметра. Есть ли способ построитьistream_iterator<string>
из временного? Я не могу использоватьstd::ref
на временном объекте либо ...
Спасибо!