首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从无符号字符*到const wchar_t*的转换

从无符号字符*到const wchar_t*的转换
EN

Stack Overflow用户
提问于 2013-05-17 12:24:32
回答 4查看 7.8K关注 0票数 0

我使用以下代码将字符串从unsigned char*转换为const wchar_t*。我所犯的错误是,只有几个单词被正确地转换,而其余的则是混淆了值。

代码语言:javascript
复制
unsigned char* temp = fileUtils->getFileData("levels.json", "r", &size);
const char* temp1 = reinterpret_cast<const char*>(temp);
size_t len = mbstowcs(nullptr, &temp1[0], 0);
if (len == -1) {

} else {
    wchar_t* levelData = new wchar_t();
    mbstowcs(&levelData[0], &temp1[0], size*10);
}

输出

代码语言:javascript
复制
temp1 = "[{"scaleFactor": 1}][{"scaleFactor": 2}][{"scaleFactor": 3}][{"scaleFactor": 4}][{"scaleFactor": 5}][{"scaleFactor": 6}][{"scaleFactor": 7}][{"scaleFactor": 8}][{"scaleFactor": 9}][{"scaleFactor": 10}]"

levelData = "[{"scaleFactor": 1}][{"scaleFactor": 2}][{"scaleFactor": 3}][{"scaleFactor": 4}][{"scaleFactor": 5}][{"scaleFactor": 6}][{"scaleFactor": 7}][{"s慣敬慆瑣牯㨢㠠嵽筛猢慣敬慆瑣牯㨢㤠嵽筛猢慣敬慆瑣牯㨢ㄠ細ﵝ﷽꯽ꮫꮫꮫﺫﻮ"
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-17 12:41:37

如果要动态分配缓冲区大小(使用new),则不需要对缓冲区大小进行硬编码。

代码语言:javascript
复制
wchar_t* levelData = new wchar_t[len+1];
mbstowcs(&levelData[0], &temp1[0], len);
票数 1
EN

Stack Overflow用户

发布于 2013-05-17 12:27:40

代码语言:javascript
复制
wchar_t* levelData = new wchar_t();
mbstowcs(&levelData[0], &temp1[0], size*10);

为一个字符分配了足够的内存。这还不足以存储您的字符串,因此,事情当然不会正常工作。

还有,那个10是从哪里来的?

票数 2
EN

Stack Overflow用户

发布于 2013-05-17 12:38:43

多亏了@BenVoigt,才发现了这个错误。把密码改成-

代码语言:javascript
复制
wchar_t levelData[200];
mbstowcs(&levelData[0], &temp1[0], size);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16608990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档