我需要根据
REG_MULTI_SZ
中表示的值列表在 C++ 中构造一个多字符串 (std::vector<std::wstring>
)。
这是我首先想到的,但当然是错误的:
std::wstring GetMultiString(std::vector<std::wstring> Values)
{
std::wstringstream ss;
for (const std::wstring& Value : Values) {
ss << Value;
ss << L"\0";
}
ss << L"\0";
return ss.str();
}
正如预期的那样,返回的字符串没有任何嵌入的 NULL 字符。
解决方案其实很简单:
std::wstring GetMultiString(std::vector<std::wstring> Values)
{
std::wstringstream ss;
for (const std::wstring& Value : Values) {
ss << Value;
ss.put(L'\0');
}
ss.put(L'\0');
return ss.str();
}