如何在std::wstringstream中插入NULL字符?

问题描述 投票:0回答:1

我需要根据

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 字符。

c++ std stringstream
1个回答
2
投票

解决方案其实很简单:

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();
}
© www.soinside.com 2019 - 2024. All rights reserved.