关于c++中unicode编码的一个刺手问题,在线等待,,,,,,,,,,,,,!
大家好,众所周知,c++中内部用的是unicode编码格式,小弟现生一疑问,还请大家帮忙解决如下:
刚才我通过在dos命令行下输入:charmap得到汉字 "兵 "在unicode编码格式中的十六进制为:5175 转换成10进制为:20853
char c=0x5175;
cout < <c < <endl;//这是肯定不行的,因为已经超过了8位,c++中规定char类型最多只有八位,这样说对吗?
string c=20853;
cout < <c < <endl;//此时我想输出汉字 "兵 "但是编译都通不过去.
请问应当如何修改,才能把20853转换成汉字 "兵 "呢?
[解决办法]
c++中内部用的是unicode编码格式 ??
不是吧
vc下
int main(int argc, char* argv[])
{
wchar_t x[2] = {0x5175};
MessageBoxW(0,x,0,0);
char out[8]={0};
setlocale(LC_ALL, "chs ");
wctomb( out , x[0] );
cout < < out < <endl;
return 0;
}
[解决办法]
标准C++默认是 ANSI 编码的。
当然可能这个编码还和使用的环境有点关系,
比如 VC6.0 是默认 ANSI编码,
但是 VS03/05 都是默认 Unicode 编码的