我是一个Java人(我知道有相当数量的C),他正试图进入C ++。
目前我正在使用VisualStudio 2012 Express并创建了一个空项目。以下......
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
严重的是不能轻易搞定。然而,我无法让这个该死的输出出现在我的生活中。
'Spark.exe' (Win32): Loaded 'C:\Users\Smith_000\Documents\Visual Studio 2012\Projects\Spark\Debug\Spark.exe'. Symbols loaded.
'Spark.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Cannot find or open the PDB file.
'Spark.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Cannot find or open the PDB file.
'Spark.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Cannot find or open the PDB file.
'Spark.exe' (Win32): Loaded 'C:\Windows\SysWOW64\apphelp.dll'. Cannot find or open the PDB file.
SHIMVIEW: ShimInfo(Complete)
'Spark.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp110d.dll'. Symbols loaded.
'Spark.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcr110d.dll'. Symbols loaded.
The program '[6260] Spark.exe' has exited with code 0 (0x0).
在阅读完之后,似乎创建一个空项目会禁用我曾经在大学里做过的简单C项目中的控制台。
那么,当调试模式处于活动状态时,将基本调试文本(如printf,cout和cerr)引入VS(首选)或控制台的一些致命简单方法是什么?
谢谢!
答案 0 :(得分:3)
通过使用cout/cerr/clog
OutputDebugStringA
#include <iostream>
#include <windows.h>
using namespace std;
// routes cout/cerr/clog to VC++ console and good old c stdout
class custom_outputbuffer : public std::streambuf {
public:
custom_outputbuffer()
{
setp(0, 0);
// set std::cout to use my custom streambuf
std::streambuf *backupOut = std::cout.rdbuf(this);
std::streambuf *backupErr = std::cerr.rdbuf(this);
std::streambuf *backupLog = std::clog.rdbuf(this);
}
~custom_outputbuffer()
{
// make sure to restore the original so we don't get a crash on close!
std::cout.rdbuf(backupOut);
std::cerr.rdbuf(backupErr);
std::clog.rdbuf(backupLog);
}
virtual int_type overflow(int_type c = traits_type::eof())
{
currentLine.push_back(c);
int value = fputc(c, stdout);
if (value == EOF || value == '\n')
{
OutputDebugStringA(currentLine.c_str());
currentLine.clear();
}
return c;
}
std::string currentLine;
std::streambuf *backupOut;
std::streambuf *backupErr;
std::streambuf *backupLog;
};
int main(int argc, char * argv[])
{
custom_outputbuffer ob;
cout << "Hello Visual Studio Debug Output" << endl;
return 0;
}
答案 1 :(得分:2)
这将打开一个带有文本的控制台窗口并快速解除它。您可以使用OutputDebugString将信息发送到Visual Studio中的“输出”窗口。例如,
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
OutputDebugString("Hello World\n");
return 0;
}
答案 2 :(得分:1)
致命的简单方法:
光标在线上:
return 0;
按F9
设置断点。您应该会在左侧看到一个大红点。这将允许您在程序从main返回之前查看控制台输出。完成阅读控制台输出后,按F5
继续执行。
答案 3 :(得分:0)
要在Windows IDE输出中查看文本,请使用OutputDebugString()
。
请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/aa363362%28v=vs.85%29.aspx
否则它会进入控制台(如果你想要一个控制台,请参阅你的设置,但要知道它会在你的程序退出后立即关闭,以防止这样的使用getchar()
暂停直到你按Enter键。 )
更好的是,就我而言,切换到Linux ......