當我們在進行C++程序開發時,需要打印一些結果出來,但是輸出時由於屏幕顯示有限,看不到全部結果,下面這個函數可以將cout語句的輸出輸出到一個指定的文件中去,方便我們的查看
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
void coutToFile(char *fileName)
{
int fd;
fd = open(fileName, O_WRONLY | O_CREAT, 0644);
chmod(fileName, S_IRWXU | S_IRWXG | S_IRWXO);
close(1);
dup(fd);
}
int main( int argc, char** argv )
{
coutToFile("./tmp.log");
........
return 0;
}
我是在Linux下使用的
使用後,終端屏幕上不再顯示輸出信息,而是輸出到了指定的文件中去了
在使用VC++編寫交互程序時,由於都是交互界面,所以運行中cout的信息是看不到的,使用下面的方法可以在你的交互程序運行的同時彈出一個cmd窗口,所有cout的信息全部輸出到該窗口中
BOOL CTestApp::InitInstance()
{
AfxEnableControlContainer();
...........
// Dispatch commands specifIEd on the command line
if (!ProcessShellCommand(cmdInfo))
return FALSE;
#ifdef _DEBUG
if (!AllocConsole())
AfxMessageBox("Failed to create the console!", MB_ICONEXCLAMATION);
#endif
// The main window has been initialized, so show and update it.
pMainFrame->ShowWindow(SW_SHOWMAXIMIZED);
pMainFrame->UpdateWindow();
// CG: This line inserted by 'Tip of the Day' component.
ShowTipAtStartup();
return TRUE;
}
最後,在退出時別忘了刪除該對象
int CTestApp::ExitInstance()
{
#ifdef _DEBUG
if (!FreeConsole())
AfxMessageBox("Could not free the console!");
#endif
return CWinApp::ExitInstance();
}
由於使用了宏定義_DEBUG,所以只在Debug版本下才有,release版本下沒有tml.