如何有效地复制istringstream?

时间:2009-09-29 01:10:59

标签: c++ stl

还是ostringstream?

istringstream a("asd");
istringstream b = a; // This does not work.

我猜memcpy也不行。

2 个答案:

答案 0 :(得分:6)

istringstream a("asd");
istringstream b(a.str());

编辑: 根据您对其他回复的评论,听起来您可能还想将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 :(得分:2)

你不能只复制流,你必须使用迭代器复制他们的缓冲区。例如:

#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);