gpt4 book ai didi

c++ - 使用 str() 和 rdbuf() 打印出一个字符串流

转载 作者:搜寻专家 更新时间:2023-10-31 01:42:44 25 4
gpt4 key购买 nike

当我有:

std::ostringstream oss("Hello");

为什么这样做:

std::cout << oss.str();

但这不会打印任何内容:

std::cout << oss.rdbuf();

阅读 operator<<(std::ostream&, std::streambuf*) 的定义说它将打印缓冲区中的字符。是否oss.rdbuf()不包含任何东西?

最佳答案

这个问题与这里的事实有关,ossostringstream 对象(ostringstream 是输出流,所以它的目的地是 写入而不是从中读取)以及流如何管理其内部缓冲区。

你可以改变

std::ostringstream oss("Hello");

std::istringstream oss("Hello");  // or std::stringstream oss("Hello");

它会按预期工作。或者使用

std::cout << oss.rdbuf()->str(); // this will print a copy of all buffer content

例子:

#include <iostream>
#include <sstream>

int main() {
std::ostringstream oss("Hello");
std::istringstream oss2("Hello");
cout << oss.rdbuf()->str() << endl; // prints "Hello"
cout << oss2.rdbuf(); // prints "Hello"
return 0;
}

关于c++ - 使用 str() 和 rdbuf() 打印出一个字符串流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26330041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com