5

OutputDebugStringメソッドはかなり退屈なようで、文字列にのみ限定されており、ポリモーフィックではないようです。整数型またはその他の変数型を出力したい場合はどうすればよいですか?

のような関数が存在することを願っていますstd::cout!

4

5 に答える 5

1

次のようなクラスを使用します。

class stringbuilder
{
public:
  stringbuilder()
  {
  }

  template< class T >
  stringbuilder& operator << ( const T& val )
  {
    os << val;
    return *this;
  }

  operator std::string () const
  {
    return os.str();
  }

private:
  std::ostringstream os;
};

出力をラッパーOutputDebugString(または文字列のみをログに記録するもの)に渡します。

void MyOutputDebugString( const std::string& s )
{
  ::OutputDebugString( s.c_str() );
}

  //usage:
MyOutputDebugString( stringbuilder() << "integer " << 5 );
于 2013-05-22T08:54:03.620 に答える
1

ユニコードをサポートする Mats Petersson の回答のマクロ:

#define odslog(msg) { std::wstringstream ss; ss << msg; OutputDebugStringW(ss.str().c_str()); }

使用法:

odslog("A string " << 123123 << L"A wide string" << "\n");
于 2017-05-16T09:00:01.120 に答える
0

さらに、MFC を使用する場合は、TRACE TRACE1 TRACE2 ... マクロを printf のようにデバッグ出力に使用できます。

于 2013-05-29T00:53:45.027 に答える