双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

请教一个字符转换的问题

Yeeler Yeeler 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
// 这是一个多字符向宽字符转换的代码
#include "stdafx.h"
#include "stdlib.h"
#include "stdio.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
char s[15] = "这搞得我头疼";
cout << s << " " << sizeof(char) << " " << sizeof(s) << endl;
wchar_t ws[1];
char *p = s;
int i;
for(i = 0; *p; ++i)
{
int len = mbtowc(&ws[i], p, MB_CUR_MAX);
p += len;
}
//delete []p;
ws[i] = L'\0 ';
wcout << ws << " " << sizeof(wchar_t) << " " << sizeof(ws) << endl;
getchar();
return 0;
}

输出结果是:
这搞得我头疼 1 15
这搞得我头疼 2 2

ws[1] 只有2个字符长度,转换后怎么会显示这么多啊。
还有,我这么写是不是还要释放指针啊,可为什么我一释放,就会出现弹出错误,但程序结果会显示Debug Assertion Failed!
...全文
评论 12
收藏 已收藏
分享
返回顶部
Yeeler
C++ 语言 65,214 成员 250,514 内容