我真的很新C++ - 編程和我有一個寫入XML文檔的問題。字符串到PCWSTR - >奇怪的回報(C++)
我使用msdn(http://msdn.microsoft.com/en-us/library/ms766497(VS.85).aspx)的xml outputter的稍微更改的示例。
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‘وووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو’,這會導致訪問衝突中的下一個方法之一。 這將是非常巨大的,如果有人能夠給我線索,在那裏我做了失敗。
謝謝。
啊,可恥的是我-.- 這樣一個基本的東西... 非常感謝你的幫助; ) – Tronje182
您也可以直接從stringToPCWSTR返回wstring本身 - 並在函數的返回值上調用.c_str()。這將節省您的內存分配擺弄。 – AshleysBrain
這正是我解決問題的方法。不過謝謝你的提示。 – Tronje182