c++ 如何将控制台之前打印的所有内容全部复制到指定文本中?
答案:2 悬赏:0 手机版
解决时间 2021-03-12 22:04
- 提问者网友:兔牙战士
- 2021-03-12 03:42
我的C++程序中有很多输出的函数,然后现在想实现一个功能,就是相当于是把所有之前输出到屏幕上的内容全部复制到文本文件中去。有什么办法实现吗?(我会文件输出流)最好能够通过函数或者神马的,还有格式的问题...
最佳答案
- 五星知识达人网友:人類模型
- 2021-03-12 04:04
如果是想让程序运行时所有输出到屏幕的都改成输出到文件:
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++的输出库,而是自己写一个类,专门控制输入输出。
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++的输出库,而是自己写一个类,专门控制输入输出。
全部回答
- 1楼网友:过活
- 2021-03-12 04:28
你右键,选标记,然后,回车键,就可以粘贴到记事本里了。
你这意思啊~
下面的代码示例使用 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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯