wstringstreams奇怪地处理-ve值

时间:2016-12-22 04:29:42

标签: c++ stringstream wchar-t

我正在尝试使用wstringstreams作为缓冲区来序列化一些数据。

我遇到的问题是数据以某种方式损坏了。要详细说明问题,请查看以下代码段:

std::vector<long> items;
for (long i = 0; i < 100; ++i)
{
    items.push_back(-1);
}

std::wstringstream ws;
for (auto & val : items)
{
    ws.write((wchar_t *)&val, sizeof(long));
}
auto resultStr = ws.str();

我期待最后resultStr的长度为100 * sizeof(long)。但我得到的大小是2。有趣的是,不是将-1插入到items容器中,而是插入1,而resultStr是预期的100 * sizeof(long)大且具有正确的内容。

使用正常的字符串流也可以获得正确的结果。

为什么基于wchar_t的流会搞乱-ve值的处理?

P.S。我在Windows 7上,vs2015 upadate3并编译代码并在x86调试上运行

0 个答案:

没有答案