2016-03-21 10 views
1

を追加するためのOutputDebugStringを使用する方法:私はデバッグモードでコードを持っているポインタ

OutputDebugString(_T("Element Name = ") + (Node->getParentElement() == NULL ? "null" : Node->getParentElement()->getName()) + _T("\n")); 

//getname() type is CString and GetParentElement() type is CXMLElement 

私はエラーの下に取得しています。このコードで: エラーC2110を:「+」:二つのポインタを追加することはできません。 2つのポインタを追加できないことを理解します。

このエラーを解決するにはどのAPIを使用しますか?

+1

ポインタの1つをC++文字列( 'std :: string'または' CString'のいずれか)に変換します。または、C++で文字列のポインタの使用をやめ、使用可能な文字列クラスを使用して始めましょう。 –

+0

MFCで標準ライブラリを使用する場合は、 'std :: osstringstream'を使用することもできます。 – jww

答えて

1

次のようにそれを使用することができます。

TCHAR msgbuf[256]; //keep required size 
sprintf(msgbuf, "The value is %s\n", charPtrVariable); 
OutputDebugString(msgbuf); 
+0

これは、Unicode以外のプロジェクトでも機能します。 'wsprintf'と' TEXT( "値は%s \ n") 'マクロを使います。 – i486

0

あなたは一時的なCStringオブジェクトを使用して、それに追加することができ、文字列を連結する2つのポインタを追加することはできませんので:以来

CString tmp = _T("Element Name = "); 
tmp += Node->getParentElement() == NULL ? "null" : Node->getParentElement()->getName(); 
tmp += _T("\n"); 
OutputDebugString(tmp); 
+0

このコードは質問に答えるかもしれませんが、いくつかの_context_を含める方が良いでしょう。_how_は動作していて、_when_はそれを使用しています。コードのみの回答は長期的には有用ではありません。 –

1

を質問はC++とタグ付けされていますが、私はstringstreamを使用することをお勧めします:

#include <sstream> 
//... 
std::stringstream ss; 
ss << "Element Name = " 
    << (Node->getParentElement() == NULL ? "null" : Node->getParentElement()->getName()) 
    << std::endl; 
OutputDebugString(ss.str().c_str()); 
関連する問題