永发信息网

c++ 如何将控制台之前打印的所有内容全部复制到指定文本中?

答案:2  悬赏:0  手机版
解决时间 2021-03-12 22:04
我的C++程序中有很多输出的函数,然后现在想实现一个功能,就是相当于是把所有之前输出到屏幕上的内容全部复制到文本文件中去。有什么办法实现吗?(我会文件输出流)最好能够通过函数或者神马的,还有格式的问题...
最佳答案
如果是想让程序运行时所有输出到屏幕的都改成输出到文件:

1. 将所有代码中的cout统统查找替换成output。然后编译。
2. 所有编译失败的地方,都是涉及到cout输出的函数。你在函数的参数列表末尾都增加一个参数,类型为ostream &,名字为output好了。默认参数值是一个全局的ostream类型变量,先设置成std::cout。
3. 编译运行。此时程序应该和最初的效果完全一样。
4. 如果想改成输出到文件,只要把那个全局ostream类型变量的值改成你的ofstream就行了。


如果单纯想将程序的屏幕输出改成输出到文件,那不用改代码,直接

./my_app.exe > output.txt
这里my_app.exe是你的程序可执行文件名称。


如果是C风格的输出,比如printf之类的,和C++风格一样用一个全局变量FILE *,初始值为stdout,然后所有参数增加一个FILE *类型参数,默认值为那个全局变量。所有printf都改成fprintf,FILE*的参数就是传入的那个新增参数。


专业点的方法是不要再代码中直接使用C/C++的输出库,而是自己写一个类,专门控制输入输出。
全部回答
你右键,选标记,然后,回车键,就可以粘贴到记事本里了。 你这意思啊~ 下面的代码示例使用 clipboard 方法将数据置于系统剪贴板中,并从中检索这些数据。这段代码假定 button1、button2、textbox1 和 textbox2 已经创建,并已置于窗体上。 button1_click 方法调用 setdataobject,从文本框中提取选定的文本,然后将其置于系统剪贴板中。 button2_click 方法调用 getdataobject,从系统剪贴板中检索数据。这段代码使用 idataobject 和 dataformats 提取已返回的数据,并在 textbox2 中显示该数据。 private:    void button1_click( object^ , system::eventargs^  )    {       // takes the selected text from a text box and puts it on the clipboard.       if ( !textbox1->selectedtext->equals( "" ) )       {          clipboard::setdataobject( textbox1->selectedtext );       }       else       {          textbox2->text = "no text selected in textbox1";       }    }    void button2_click( object^ , system::eventargs^  )    {       // declares an idataobject to hold the data returned from the clipboard.       // retrieves the data from the clipboard.       idataobject^ idata = clipboard::getdataobject();       // determines whether the data is in a format you can use.       if ( idata->getdatapresent( dataformats::text ) )       {          // yes it is, so display it in a text box.          textbox2->text = (string^)(idata->getdata( dataformats::text ));       }       else       {          // no it is not.          textbox2->text = "could not retrieve data off the clipboard.";       }    }参考:https://msdn.microsoft.com/zh-cn/library/system.windows.forms.clipboard(v=vs.80).aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-1
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
新沂市出入境管理处周六上班吗?
求占地12米(宽)X14米(长)的双拼别墅设计
温泉大坝西桥怎么去啊,有知道地址的么
枕能组什么词
耳机偏音是什么原因?
在今天,牛顿和莱布尼茨被誉为发明微积分的两
我有大量废机油出售,哪里有收的我是保定得
九庄香锅坊地址在哪,我要去那里办事
many species of…… many kinds of …… 后
人类的双眼皮对单眼皮显性。一对夫妇均为单眼
酸枣仁是中草药吗?
WE ARE クロスハート
红太阳浴场我想知道这个在什么地方
人有五行,五行怎么划分的,
属喉上神经支配的肌肉是()。
推荐资讯
喝什么汤对肺有好处
凤凰双语幼儿园怎么去啊,有知道地址的么
女朋友她妈妈过生日,我该说点什么?
我的支付宝解绑手机号后,原手机号还可以登录
如何把gn5005的录音下载到电脑?
新疆文科考生考430分。可以上新疆什么学校?
潍坊地区如何办理pos机?需要哪些资料?需要
如何寻觅贵人?
领取失业金中我找到了新的单位,新单位可以在
明朝的亡国之君朱由检应为明思宗,但为何明史
柠檬是暗恋的味道,糖果是恋爱中的味道。出自
全天录音软件下载手机版有哪些?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?