C++ 如何使用OutputDebugString添加指针
我的代码处于调试模式:C++ 如何使用OutputDebugString添加指针,c++,visual-c++,C++,Visual C++,我的代码处于调试模式: OutputDebugString(_T("Element Name = ") + (Node->getParentElement() == NULL ? "null" : Node->getParentElement()->getName()) + _T("\n")); //getname() type is CString and GetParentElement() type is CXMLElement 使用此代码,我得到以下错误: 错误C
OutputDebugString(_T("Element Name = ") + (Node->getParentElement() == NULL ? "null" : Node->getParentElement()->getName()) + _T("\n"));
//getname() type is CString and GetParentElement() type is CXMLElement
使用此代码,我得到以下错误:
错误C2110:“+”:无法添加两个指针。
我明白不能再加上两个指针
我应该使用什么API来清除此错误?您可以按如下方式使用它:
TCHAR msgbuf[256]; //keep required size
sprintf(msgbuf, "The value is %s\n", charPtrVariable);
OutputDebugString(msgbuf);
由于无法将两个指针添加到一起以连接字符串,因此可以使用临时
CString
对象并附加到该对象:
CString tmp = _T("Element Name = ");
tmp += Node->getParentElement() == NULL ? "null" : Node->getParentElement()->getName();
tmp += _T("\n");
OutputDebugString(tmp);
由于问题被标记为
C++
,我建议使用stringstream:
#include <sstream>
//...
std::stringstream ss;
ss << "Element Name = "
<< (Node->getParentElement() == NULL ? "null" : Node->getParentElement()->getName())
<< std::endl;
OutputDebugString(ss.str().c_str());
#包括
//...
std::stringstream-ss;
ss getParentElement()->getName())
将其中一个指针转换为C++字符串(或者<代码> STD::String 或<代码> cString )。或者更好的是,停止使用C++中的字符串指针,并开始使用可用的字符串类。如果你喜欢MFC上的标准库,你也可以使用<代码> STD::OsString Strue/Cuff>。虽然这个代码可以回答这个问题,但是最好包括一些上下文,解释它是如何工作的以及何时使用它。从长远来看,纯代码的答案没有用处。这将适用于非Unicode项目。使用wsprintf
和TEXT(“值为%s\n”)
宏。