Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用OutputDebugString添加指针_C++_Visual C++ - Fatal编程技术网

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”)
宏。