提问人:ten1o 提问时间:10/31/2022 最后编辑:ten1o 更新时间:10/31/2022 访问量:367
如何将 cout 存储在字符串中,然后将字符串输出到控制台?
How to store cout in string and then output the string to console?
问:
我正在尝试将程序的输出存储在一个文件中,即使我知道有各种更简单的方法,我也想使用字符串解决问题,因为我想知道它背后的逻辑。
到目前为止,我了解实现:
std:: stringstream s;
s << "string";
我知道在某个时候我会有以下代码
cout << s.str()
但是如何在不提供字符串本身的情况下将程序输出存储在字符串流中呢?换句话说,如何将程序中的 cout 语句重定向到字符串?
答:
4赞
Remy Lebeau
10/31/2022
#1
如果您的目标是重定向到 ,则可以使用 cout.rdbuf()
方法提供要写入的不同缓冲区,例如 a 的缓冲区(或 a 等)。std::cout
std::string
std::cout
std::ostringstream
std::ofstream
上面链接的文档提供了以下示例:
#include <iostream>
#include <sstream>
int main() {
std::ostringstream local;
auto cout_buff = std::cout.rdbuf(); // save pointer to std::cout buffer
std::cout.rdbuf(local.rdbuf()); // substitute internal std::cout buffer with
// buffer of 'local' object
// now std::cout work with 'local' buffer
// you don't see this message
std::cout << "some message";
// go back to old buffer
std::cout.rdbuf(cout_buff);
// you will see this message
std::cout << "back to default buffer\n";
// print 'local' content
std::cout << "local content: " << local.str() << "\n";
}
评论
0赞
Mark Ransom
10/31/2022
每天都能学到新东西。我不知道C++标准委员会已经预料到了这种需求。
下一个:在 Julia 中切碎文件
评论
cout
s <<