Chinaunix首页 | 论坛 | 博客
  • 博客访问: 862361
  • 博文数量: 149
  • 博客积分: 3671
  • 博客等级: 中校
  • 技术积分: 1701
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-03 16:52
文章分类

全部博文(149)

文章存档

2011年(57)

2010年(92)

分类: C/C++

2011-03-25 11:36:56

在非Unicode下,输出汉字直接使用printf即可。如下:

      char *SName = "生物医学工程";
      printf("printf: %s\n", SName);

      尝试了一下在Unicode下(VS2008),使用wprintf和wcout输出汉字,没有成功,百度了一下,发现如下解释:

      由于在控制台下,系统默认的locale汉字集为GB码(指装有中文系统),在使用Unicode时,是系统帮忙将宽字符转换为多字节字符,因此在控制台程序中直接显示Unicode的汉字时,需要进行设置。

      上面的解释看的也是半懂不懂的,但是设置方法是很固定的,就是通过locale头文件中的setlocale函数。比如输出“生物医学工程”这几个汉字,方法如下:

#include "stdafx.h"
#include
#include
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
TCHAR *Name = L"生物医学工程";
setlocale(LC_ALL, "chs");
while (*Name != '\0')
   wcout<<*Name++;
wcout<Name -= 6;

//while (*Name != '\0')
_tprintf(L"wprintf: %s\n", Name);

return 0;
}


阅读(3888) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~