当我尝试在wchar_t字符串上使用memcpy时遇到错误。具体来说,尽管我发送到memcpy的长度对于我想要复制的字符串的长度是正确的,但只复制了字符串中字符的前半部分。这使我在目标字符串中留下了错误的数据,因为字符串的后半部分充满了从字符串中新出现的垃圾字符。
下面的屏幕截图显示了我正在处理的确切问题:
我唯一能想到的是,这可能与某些方面有关,我将我的语言环境设置为日语用于非Unicode应用程序,但我做的第一件事是将语言环境更改回英语,问题仍然相同。我觉得我错过了一个非常明显的解决方案。有什么想法吗?
答案 0 :(得分:5)
memcpy
需要多个字节,而不是多个对象memcpy
代替wcslen(src) + 1
,而wcscpy
new wchar_t[]
而不是std::wstring
。 如果您已将m_pTextures
设为vector
std::wstring
,那么您的代码将变得更加简单,并且不会出现此类错误。
答案 1 :(得分:2)
正如其他人已经指出的那样,memcpy复制字节,而wchar_t不止一个字节。无论如何,为什么不使用一些现有功能呢?看看wcscpy和wchar_t的所有函数。开始here。