Или ostringstream?Как эффективно копировать istringstream?
istringstream a("asd");
istringstream b = a; // This does not work.
Я думаю, что memcpy тоже не будет работать.
Или ostringstream?Как эффективно копировать istringstream?
istringstream a("asd");
istringstream b = a; // This does not work.
Я думаю, что memcpy тоже не будет работать.
istringstream a("asd");
istringstream b(a.str());
Edit: Основываясь на ваш комментарий к другому ответу, это звучит, как вы можете также скопировать все содержимое fstream в strinstream. Вы не хотите/должны делать этот персонаж одновременно (и вы правы - это обычно довольно медленно).
// create fstream to read from
std::ifstream input("whatever");
// create stringstream to read the data into
std::istringstream buffer;
// read the whole fstream into the stringstream:
buffer << input.rdbuf();
+1 Я не знал, что есть перегрузка для буферов! – AraK
Да, это один из тех милых маленьких трюков, о которых почти никто не знает. Не полезно все это часто, но когда вы хотите, что он делает, это делает вещи намного проще. –
Не должно быть 'ostringstream' вместо' istringstream'? –
Вы не можете просто копировать потоки, вам нужно скопировать их буферы с помощью итераторов. Например:
#include <sstream>
#include <algorithm>
......
std::stringstream first, second;
.....
std::istreambuf_iterator<char> begf(first), endf;
std::ostreambuf_iterator<char> begs(second);
std::copy(begf, endf, begs);
Не копирует ли один персонаж одновременно? –
Вы измерили это? – AraK
Я измерил его, когда input был файлом ifstringstream. Разница была огромной. –
Почему вы хотите закрыть этот вопрос? –
Интересно, комментирует кто-нибудь? – GManNickG
Я думаю, что это правильный вопрос :) – AraK