C++捕获输出流

C++ catch output stream

本文关键字:输出流 C++      更新时间:2023-10-16

我有一个 c++ 库,它提供了一个具有复杂逻辑的对象。到目前为止,许多对象在执行单个库命令时将其输出打印到std::cout。我想为此创建一个Qt GUI(将其输出到文本小部件而不是控制台输出中),因此必须对其进行std::cout更改以使其更灵活。我已经将对std::stringstream参数的引用传递给主对象(并将其传递给较低的对象),并将所有"std::cout <<"替换为"stream <<"(stream is std::stringstream)。

它不起作用,因为我丢失了大部分输出。当我想从字符串流中获取它时,它小得离谱(只有几个字符)。似乎如果我这样做stream << var1 << var2 << var3只有var3可用。

不知道如何解决这个问题。如果我传递对 std::cout 的引用作为主要对象参数,则在控制台下一切都会好起来的,但它不适用于 GUI 应用程序(我想我无法从 std::cout 获取输出)。

请告诉我我是否以不好的方式使用流字符串。或者让我知道是否有更好的方法来获取输出(使用其他方法而不是字符串流)。提前非常感谢。

你可以在

程序开始时使用 freopen("out.txt","w",stdout)。