加急:linux下wchar_t怎么输出?

Coder李海波 小米 研发工程师  2007-07-25 02:55:05
1.下面的代码怎么输出地址:0x8058010,怎么输出中文?
wchar_t *w1 = L"中国";
cout << w1<< endl;

2.读取一个文件,比如编码是gb2312,需要怎么进行编码转换才能正确输出?

3.怎么将已知编码如gb2312的文件,转换另存为Unicode的文件?
...全文
604 点赞 收藏 12
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
不会吧,我设置""就不可以,似乎跟语言设置有关系。
回复
Coder李海波 2007-07-25
to akirya
我设置为zh_CN.GBK/gb2312都不行,设为""才行,奇怪了。
回复
#include<iostream>
using namespace std;
int main()
{
setlocale( LC_ALL , "zh_CN.gb2312" );
char sz[]="a中文s";
wchar_t xx[64]={0};
mbstowcs(xx,sz, 63 );
wcout<<xx<<endl;
}
转换输出都有了
回复
Coder李海波 2007-07-25
setlocale(LC_ALL, "");
wcout << L"中文"<< endl;
这样也行
回复
Coder李海波 2007-07-25
setlocale(LC_ALL, "");
wprintf(L"%S",L"中国");
这样就可以了,哈哈
回复
那个不是我说的,我只会用printf来输出宽字符
回复
Coder李海波 2007-07-25
to lockhall
Lcout有这个函数么?只见过cout,wcout
to akirya
cout << L"中国"<<endl;
wcout <<L"中国"<<endl;
结果是:
0x8058250
-?
回复
mdj_boy 2007-07-25
1.wcout
回复
theendname 2007-07-25
wprintf(L"%S",w1);
回复
1 我只知道printf("%S",L"xxxx");

2 直接输出啊。

3 setlocale( LC_ALL , "zh_CN.gb2312" );然后调用mbstowcs就可以了
回复
lockhall 2007-07-25
2 3 编码的不会。

期待lx高人 :)
回复
lockhall 2007-07-25
1.cout << *w1<< endl;
回复
发动态
发帖子
C++ 语言
创建于2007-09-28

5.9w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
社区公告
暂无公告