请教一个字符转换的问题
// 这是一个多字符向宽字符转换的代码
#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!
#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!
...全文



