gpt4 book ai didi

c++ - 将void函数输出到txt

转载 作者:太空狗 更新时间:2023-10-29 20:31:01 25 4
gpt4 key购买 nike

我只是在我的第二季度的 c++ 所以请保持简单的答案....

我有一个非常困惑的程序,包含链接列表、类和文件 i/o我几乎完成了该程序,但我无法将其输出到 .txt这可能是我糟糕的编码布局,因为当我写这篇文章时我忘记了输出。有问题的功能是:

tag.display_balance(); 

请注意,此函数位于进入类的链接列表(标记)内,并调用函数 (display_balance) 来打印输出。

控制台输出的一切都很好。但我不知道如何将它保存到 .txt一些谷歌和论坛搜索没有显示任何我能理解的东西。我试过:

ofstream BilloutPut;
BilloutPut.open("BillingStatements.txt");
BilloutPut<< tag.display_balance();

这是我学会如何输出到文件的唯一方法,但由于它是一个无效函数,所以它不起作用。如果可能的话,我想避免重载 << 函数。

-感谢观看

最佳答案

如果该函数执行其自己的文件 I/O,这将很困难(这就是存在“关注点分离”软件设计指南的原因,它显然在这里被违反了)。重载operator <<将无济于事,函数没有返回值供此类运算符放置在任何地方。

如果您可以修改该函数,让它接受一个参数,即 ostream要写入的对象(这可以默认为 cout )。

如果你不能修改函数,但它使用std::cout , 你可以使用 cout.rdbuf(newbuffer)重定向 std::cout通过将它与另一个目的地相关联。

如果该函数使用其他一些 I/O 库,您可能必须使用 freopen甚至 dup2重新映射 stdout (操作系统标准输出文件描述符)到另一个目的地。

请注意,任何涉及重定向的技术(即 cout.rdbuffreopendup2 )都会在任何多线程程序中造成巨大困惑。这可能不适用于初学者,但是当您开始使用线程时,您需要设计 I/O 函数以使用您想要的任何流,全局解决方案不会削减它。

关于c++ - 将void函数输出到txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5201818/

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