谁帮我看看这简单的代码出了什么问题了。
#include "stdafx.h"
#include "windows.h"
void main()
{
WCHAR *str =new WCHAR[100];
wcscpy(str, L"中华人民共和国");
wprintf(L"WCHAR is = %s\n", str);
printf("length is %d\n", wcslen(str));
delete []str;
return;
}
//没有任何输出,但如果把
wcscpy(str, L"中华人民共和国");改为
wcscpy(str, L"hello world"); 就有输出了。不知为何?
问题点数:0、回复次数:10Top
1 楼verlongan(verlongan)回复于 2005-05-03 22:08:49 得分 0
我的目的是测试unicode编程--《windows 核心编程》,用双字节来写,所以,如果你想改为
char *str 这格式就免了,谢谢。Top
2 楼tuxw(醉书生)回复于 2005-05-03 23:28:07 得分 0
这段代码本身应该没有问题,可能是 VC 设置问题
我在 VC 中用 Intel 编译器编译输出正常,用 VC 自带的编译器编译就没有输出Top
3 楼chunhai12(小海)回复于 2005-05-04 00:07:21 得分 0
怎么看怎么别扭Top
4 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-05-04 00:10:25 得分 0
宽字符不懂。Top
5 楼277894613(秒大刀)回复于 2005-05-04 00:25:12 得分 0
void main()
{
WCHAR *str =new WCHAR[100];
wcscpy(str, L"中华人民共和国");//7
wprintf(L"WCHAR is = %s\n", str);//没有输出
wcscpy(str, L"hello world");//11
wprintf(L"WCHAR is = %s\n", str);//没有输出
wcscpy(str, L"hello world");//11
wprintf(L"WCHAR is = %s\n", str);//正常输出
printf("length is %d\n", wcslen(str));
delete []str;
return;
}
看来Unicode的是不能输出了Top
6 楼Jim_King_2000()回复于 2005-05-04 00:28:01 得分 0
终于明白在console下输出中文的UNICODE字符需要locale库。这样就没问题了。
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
wchar_t szOutput[] = L"你好!\n";
_wsetlocale(LC_ALL, L"chs");
wprintf(L"%s", szOutput);
return EXIT_SUCCESS;
}
若是没有_wsetlocale(LC_ALL, L"chs");这句,死活也看不到中文。除非不用UNICODE。Top
7 楼tuxw(醉书生)回复于 2005-05-04 01:37:11 得分 0
原来如此
不过为什么用 Intel 的编译器就不用_wsetlocale(LC_ALL, L"chs");呢Top
8 楼yuhjnm_20001(力)回复于 2005-05-04 12:32:10 得分 0
markTop
9 楼dvdface(汉学堂)回复于 2005-05-04 17:35:14 得分 0
markTop
10 楼sTigerwsk(++++++禽兽联合国总理兼国防部长--骗子++++++)回复于 2005-05-06 18:39:35 得分 0
不对呀
我在DEV下把stdafx.h去掉
结果
有输出
输出正确Top




