0

我拼命尝试在 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 之间的内部关系的任何解释。

4

1 回答 1

1

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

据我所知,输入字符串流的获取区域可能是无效的,并且在其实现中完全未使用。我不认为有任何方法可以改变这一点。

于 2013-11-01T22:45:53.937 回答