【问题标题】:Passing from ostringstream to istringstream and to file从 ostringstream 传递到 istringstream 和文件
【发布时间】:2013-11-02 06:51:50
【问题描述】:

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

【问题讨论】:

    标签: fstream stringstream streambuf


    【解决方案1】:

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

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

    【讨论】:

    • 那么,在 iss 中将 streambuf 光标设置为开头会很有趣吗? (即使在 oss 继续使用的同时设置 streambuf 也可能很危险)
    • 或者我必须将字符串流复制为:iss.str(oss.str()) 和 ofs
    • @user2928422 我认为后者是最符合逻辑和最直接的解决方案,所以是的:ofs &lt;&lt; oss.str()
    猜你喜欢
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多