gpt4 book ai didi

c++ - 如何捕获将在 C++ 中发送到标准输出的数据?

转载 作者:太空狗 更新时间:2023-10-29 21:29:03 24 4
gpt4 key购买 nike

在 C++ 中如何捕获将发送到标准输出的数据?

我在这里找到:

   // This can be an ofstream as well or any other ostream
std::stringstream buffer;

// Save cout's buffer here
std::streambuf *sbuf = std::cout.rdbuf();

// Redirect cout to our stringstream buffer or any other ostream
std::cout.rdbuf(buffer.rdbuf());

std::cout << "Hello!";

// When done redirect cout to its old self
std::cout.rdbuf(sbuf);

std::cout << "STD data: \n";
std::cout << buffer.get();

这行不通。 'Hello' 仍然在 'STD data:' 之前输出,并且 buffer.get() 返回 '-1'。怎么了?

最佳答案

写:

  std::cout << buffer.str(); //not buffer.get();

现在它的工作:http://ideone.com/W8mW8


顺便说一下,std::stringstream::get() 返回 std::istream。看到这个:

http://www.cplusplus.com/reference/iostream/istream/get/

回想一下,std::stringstream 派生自 std::istream。所以不要混淆。 :-)

关于c++ - 如何捕获将在 C++ 中发送到标准输出的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5687312/

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