从ostringstream传递到istringstream并传递给文件

时间:2013-10-31 12:28:12

标签: fstream stringstream streambuf

我拼命地尝试在ostringstream中写入,然后在另一个对象的istringstream或文件中传输数据。

std::ostringstream oss;
oss << "Hello World";

首先,我试试这个:

iss.basic_ios<char>::rdbuf(oss.rdbuf());

但是简单的“iss.str()”根本不会返回任何内容。 (第一个问题)

然后当我尝试:

std::ofstream ofs("test.txt");
ofs << oss.rdbuf();
ofs.close();

test.txt 文件中没有写入任何内容。 (第二个问题)

提前感谢您对stringstream和streambuf之间内部关系的任何解释。

1 个答案:

答案 0 :(得分:0)

你有一种误解 - 做iss.basic_ios<char>::rdbuf(oss.rdbuf())只会改变输入字符串流的内部指针,指向另一个输出字符串流的缓冲区。它对iss的内部缓冲区的内容没有影响(即没有数据传输)。

据我所知,输入字符串流的 get 区域可能无效且完全未被其实现使用。我认为没有办法改变它。