所以我有一个GUI程序,由于某种原因它不允许我使用printf()进行调试。 当我使用printf()时,由于某种原因它不会转到Visual Studio调试器。
无论如何,我想创建一个在GUI打开时打开的单独窗口, 并且基本上能够将信息提供给该控制台并与之通信。
例如:
void talk(std::string info){
//Add the value of info to the next line in the console
}
任何人都知道如何做到这一点? 基本上创建一个命令行并与之交谈以便我可以看到输出:
CommandLine c;
c.talk("hey!");
答案 0 :(得分: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的方法(更容易重复使用)。
答案 1 :(得分:3)
@peachykeen有一半的解决方案。如果您想让printf
和cout
有效,请尝试以下操作:
AllocConsole();
freopen("CONOUT$", "w", stdout);