2011-04-27 98 views
1

所以我有一個GUI程序,由於某種原因,它不讓我使用printf()進行調試。 當我使用printf()時,出於某種原因它不會轉到Visual Studio調試器。無論如何,我想讓我自己的獨立窗口在GUI打開時打開, 基本上能夠將信息輸入到控制檯並與之通話。C++單獨的命令行窗口?

例如:

void talk(std::string info){ 
//Add the value of info to the next line in the console 
} 

任何人都知道如何做到這一點? 基本上創建一個命令行和交談,所以我可以看到輸出:

CommandLine c; 
c.talk("hey!"); 
+0

可能重複的[Windows C++:我怎樣才能重定向調用fprintf中STDERR?](http://stackoverflow.com/questions/7664/ Windows的C-如何-可以-I-重定向-標準錯誤換的呼籲fprintf中) – 2011-04-27 00:46:30

回答

4

可以使用AllocConsole創建一個控制檯,然後明確地寫入到創建一個控制檯(有幾個方法,GetStdHandle和文件寫將會工作)。您也可以使用OutputDebugString來寫入VS輸出窗口。

void makeConsole() 
{ 
    AllocConsole(); 
    console = GetStdHandle(STD_OUTPUT_HANDLE); 
} 

void talk(std::string info) 
{ 
    WriteFile(console, info.c_str(), info.length()); // To console 
    OutputDebugString(info.c_str()); // To output window 
} 

(僞代碼,功能可能不完全正確)

編輯: 如果你只通過你的talk功能寫到控制檯,這將正常工作。如果你在整個代碼中使用printf/cout,你一定要使用Ben的方法(重複使用簡單得多)。

3

@peachykeen有一半的解決方案。如果你想printfcout工作,試試這個:

AllocConsole(); 
freopen("CONOUT$", "w", stdout);