C++ 更改调试输出的颜色

C++ 更改调试输出的颜色,c++,visual-studio,C++,Visual Studio,我有时使用类DOut(如下所列)进行调试 #include<fstream> #include<iostream> #include<sstream> #define WIN32_LEAN_AND_MEAN #include<Windows.h> #ifdef UNICODE #define tostream wostream #define tostringstream wostringstream #def

我有时使用类DOut(如下所列)进行调试

  #include<fstream>
  #include<iostream>
  #include<sstream>
  #define WIN32_LEAN_AND_MEAN
  #include<Windows.h>

  #ifdef UNICODE
  #define tostream wostream
  #define tostringstream wostringstream
  #define _T(x) L##x
  #else
  #define tostream ostream
  #define tostringstream ostringstream
  #define _T(x) x
  #endif

  class DOut : public std::tostringstream
  {
  public:
     //http://stackoverflow.com/questions/2212776/overload-handling-of-stdendl
     DOut& operator << (std::tostream&(*f)(std::tostream&))
     {
        if (f == std::endl)
        {
           *this << _T("\n");
           OutputDebugString(str().c_str());
           str(_T(""));
        }
        else
        {
           *this << f;
        }
        return *this;
     }

     //https://hbfs.wordpress.com/2010/12/21/c-logging/
     template <typename TT>
     inline DOut & operator << (const TT& t)
     {
        (*(std::tostringstream*) this) << t;
        return *this;
     }

  };

  int main()
  {
     DOut dout;
     int x = 20;
     dout << "x = " << x << std::endl;
     dout << "x * x = " << x * x << std::endl;
     dout << "hexq=" <<  x*x << "=" << std::hex << x * x << std::endl;
  }
以上内容并非严格准确,因为我不知道如何让stackoverflow显示单色文本。所有的文字只有一种颜色。我总是可以将它输出到一个文件中,但这很方便,因为我并不总是有一个控制台窗口,我也不必担心chdirs会改变输出文件的写入位置


我只是想知道是否有可能输出不同颜色的调试信息。我尝试过ANSI转义序列,但它们不起作用。

如果我理解正确,您可以借助扩展来完成这些事情:或者


它们可以更改输出窗口中的外观。当使用DOut类输出时,您可以使用开箱即用的行为或添加一些特殊字符,并创建自己的规则如何为其着色


VSColorOutput钩住Visual Studio的分类器链。这允许VSColorOutput监视发送到输出窗口的每一行。将检查由正则表达式和分类组成的分类器列表。第一个匹配表达式确定文本行的分类。如果没有匹配的模式,则该行被归类为通用构建文本。

事实上,答案比我想象的要简单。只需在“输出”窗口中单击鼠标右键,然后选择“程序输出”。它只显示程序输出,而不显示所有其他位。不需要颜色


另外,从VS2005到当前版本都可以使用它,而无需为VS的不同版本安装不同的Visual Studio扩展。

定义
\u T
宏是一个特别糟糕的主意,因为它已经存在于tchar.h中<代码>\u T无论如何都是一个错误。由于您使用的是
OutputDebugString
,您可能需要下载或创建自己的调试捕获工具,该工具可以识别您想要支持的任何终端转义代码。其实没那么难。那些工具是做什么的?你认为他们的地址是哪一部分?为什么您的链接中缺少此信息?它们可以更改输出窗口中的外观。您可以使用开箱即用的行为,或在使用DOut类输出时添加一些特殊字符,并创建自己的规则如何为其着色。应下载此扩展以使用。因此,为了节省您的时间,我通过谷歌搜索添加了链接=)谢谢您的反馈-我更新了一点我的答案。我查看了VSColorOutput-他们的更多信息链接会转到一些泰国网页。我想我会先在虚拟机上试用这些。我真的不相信链接,当他们去某个不知名的地方。