MFC调用控制台,利用cout、printf输出信息
添加头文件
#include <io.h>
#include <fcntl.h>
#include <stdio.h>
添加如下两个函数用来启动和结束控制台
static FILE *m_pf = NULL;
void StartConsole()
{
if (m_pf)
CloseConsole();
AllocConsole();//控制台调试窗口开启
freopen_s(&m_pf, “CONOUT$”, “w”, stdout);
SetConsoleTitle(_T(“logs”));
}
void CloseConsole()
{
if (m_pf)
fclose(m_pf);
m_pf = NULL;
FreeConsole();
}
编译时如果提示freopen错误unsafe
设置工程属性——C/C++——预处理器——预处理器定义中加入一条指令:_CRT_SECURE_NO_WARNINGS,确认即可。
使用方法:
在mfc程序中任意位置调用StartConsole(),都会打开控制台界面。
随时都可以利用printf和cout向控制台窗口输出信息,
printf示例如下:
printf("name = %s\n ", “Mr Wang”);
printf("age = %d\n ", 30);
unicode时,向控制台输出unicode信息:
setlocale(LC_ALL, “chs”);//先把输出设置为中文
_tprintf(_T("%s "), s);
如果提示setlocale和LC_ALL错误,增加下面头文件,
#include<locale.h> //本头文件要放在#include "stdafx.h"后面
cout示例如下:
std::cout << “cout test” << std::endl;
int itime = 100;
std::cout << " time = " << itime << " secs" << std::endl;
float fData = 1.0/3;
std::cout << " time = " << fData << " 计算结果" << std::endl;
unicode时,向控制台输出unicode信息:
std::locale loc("chs");
std::wcout.imbue(loc);
std::wcout << L"中文";
std::wcout << _T("中文");
注意:
1、想要关闭控制台时,调用CloseConsole(),
不可手动点击控制台右上角关闭按钮关闭控制台,程序会出错。
2、鼠标拖动选择控制台中内容后,可能会出错。
亲测可用,vs2013做了个MFC基于对话框调用控制台输出信息的例子程序,
下面地址下载:
https://download.csdn.net/download/weixin_41885527/14042142