1

我对 C++ 编程真的很陌生,我在写入 xml 文档时遇到了问题。

我正在使用来自 msdn ( http://msdn.microsoft.com/en-us/library/ms766497(VS.85).aspx ) 的 xml 输出器的一个稍微改变的示例。

HRESULT CreateAndAddTestMethodNode(string name)
{
HRESULT hr = S_OK;
IXMLDOMElement* pElement = NULL;

CHK_HR(CreateAndAddElementNode(pXMLDom, L"method", L"\n\t", pClass, &pMethod));
CHK_HR(CreateAndAddAttributeNode(pXMLDom, L"name", stringToPCWSTR(name), pMethod));
     //more Attribute Nodes (deleted for better overview ;) )
CleanUp:
SAFE_RELEASE(pMethod);

return hr
}

我给 CreateAndAddTestMethodNode 一个字符串,它用 stringtopcwstr 将它转换为 pcwstr,或者应该这样做。

//convert string to pcwstr
PCWSTR stringToPCWSTR (const std::string& str)
{
int len; 
int slength = (int)str.length() + 1; 
len = MultiByteToWideChar(CP_ACP, 0, str.c_str(), slength, 0, 0);  
wchar_t* buf = new wchar_t[len]; 
MultiByteToWideChar(CP_ACP, 0, str.c_str(), slength, buf, len); 
std::wstring result(buf); 
delete[] buf;
PCWSTR pResult = result.c_str(); 
return pResult;
}

但它只返回类似“0x00bb9908‘وووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو’,这会导致访问冲突中的下一个方法之一,这将是真正伟大的,如果有人能够给我的线索,在那里我做了失败。

谢谢你。

4

2 回答 2

3

的结果c_str()与字符串一起被破坏result(当它超出范围时)。您将需要为它显式分配内存。

于 2010-03-02T07:38:46.313 回答
0

您可以将 stringToPCWSTR 的返回类型作为对 PCWSTR 的 const 引用,即 const PCWSTR&

于 2010-03-02T07:57:44.657 回答