http://blog.sina.com.cn/s/blog_7dc29ca00100uh53.html 2011.05 首先中文编码是4个字节,相当于四个字符。
所以你要放的话,可以这样。
char a[] = {"你好"};
printf("%s",a);
还可以以下方式存放:
char a[]="张三";
char b[]="李四";
中文数组一般是Unicode编码
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
string ss1[2];
ss1[0] = "张三";
ss1[1] = "李四";
cout<<ss1[0]<<endl;
return 0;
}
-------------------------------------------------------------------------------------------
wchar_t是C/C++的字符数据类型,就是unicode编码,char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个,char型无法表示。
wchar_t数据类型一般为16位或32位,但不同的C或C++库有不同的规定,如GNU
Libc规定wchar_t为32位[1],总之,wchar_t所能表示的字符数远超char型。
标准C++中的wprintf()函数以及iostream类库中的类和对象能提供wchar_t宽字符类型的相关操作。
#include <iostream>
#include <stdlib>
using namespace std;
void main()
{
locale loc( "chs" );//定义“区域设置”为中文方式
wcout.imbue( loc );//载入中文字符输入方式
wchar_t str[]=L"中国";//定义宽字符数组,注意L是大写
wcout<<str<<endl;//显示宽字符数组,下同
wprintf(str);
system("pause");
}
-----------------------------------------------------------------------------------------
wchar_t是C/C++的字符数据类型,就是unicode编码,char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个,char型无法表示。
wchar_t数据类型一般为16位或32位,但不同的C或C++库有不同的规定,如GNU
Libc规定wchar_t为32位[1],总之,wchar_t所能表示的字符数远超char型。
标准C++中的wprintf()函数以及iostream类库中的类和对象能提供wchar_t宽字符类型的相关操作。 #include
<iostream>
#include <stdlib>
using namespace std;
void main()
{
locale loc( "chs" );//定义“区域设置”为中文方式
wcout.imbue( loc );//载入中文字符输入方式
wchar_t str[]=L"中国";//定义宽字符数组,注意L是大写
wcout<<str<<endl;//显示宽字符数组,下同
wprintf(str);
system("pause");
}
------------------------------------------------------------------------------------------
UNICODE 编程入门
作者:NorthTibet
简介
如果你编写的程序是针对非英语国家的用户,如中国、日本、东欧和中东地区,那么你一定要熟悉
UNICODE 字符集。尤其是用
Visual C++/MFC
编写针对上述国家和地区的用户的程序时,如果你想让自己的应用程序得到更广泛的用户,那么必须考虑代码
UNICODE 的兼容性,也就是说它既在
ASCII 模式下运行
,也能在UNICODE 模式下运行。本文将介绍
UNICODE
的一些基本编程知识,澄清很多人(包括我自己)在这个问题上存在的模糊认识。对于任何使用
Visual C++ 和/或
MFC 编程的人来说,这篇文章肯定值得一读。
UNICODE到底是什么?
UNICODE 是目前用来解决
ASCII 码
256 个字符限制问题的一种比较流行的解决方案。大家知道,ASCII
字符集只有256个字符,用 0-255
之间的数字来表示。包括大小写字母、数字以及少数特殊字符;如标点符号、货币符号等。对于大多数拉丁语言来说,这些字符已经够用。但是,许多亚洲和东方语言所用的字符远远不止256个字符。有些超过千个。人们为了突破
ASCII
码字符数的限制,试图用一种简单的方法来针对超过256个字符的语言编写计算机程序。于是
UNICODE 应运而生。UNICODE
通过用双字节来表示一个字符,从而在更大范围内将数字代码映射到多种语言的字符集。
Visual C++的解决方案
作为软件开发人员,如何熟练有效地使用 UNICODE
呢?如果你正在用 Visual
C++ 编写程序,UNICODE
兼容性意味着你的程序是否具有国际化特征,也就是说你的应用程序是针对本地市场还是国际市场。一旦你作出了决定,那么就得在代码中实现具体细节。好在
Visual C++
提供了很多内建功能来支持 UNICODE,在创建工程时就可以利用
Visual C++
提供的这些功能。在产生应用程序框架代码之前,AppWizard 允许开发人员决定是否支持
UNICODE。Win32 SDK
包含有一些数据类型遵循 UNICODE
编码规则,MFC 以宏的形式提供了将一般文本转换成
UNICODE
数据类型的途径。开发人员只需要稍微改变一下编写代码的习惯便可以轻松编写支持 UNICODE
的应用。
字符串
C 程序员一般是用
char 关键字象下面这样来声明一个字符串数组:
char str[100];
象下面这样声明函数原形:
void
strcpy( char
*out, char
*in );
为了将上面的声明改成支持双字节的 UNICODE
字符集,可以用下面的方法:
wchar_t str[100];
或者
void wcscpy(
wchar_t *out,
wchar_t *in
);
此外,微软还提供一种通过预处理指令来实现
UNICODE。每当用 Visual C++
创建新工程时,只要确定是否支持另外一种字符集,则
AppWizard
将会在头文件中插入预处理指令。这些指令告诉编译器程序想要支持何种字符集。这样在使用VC++提供的通用数据类型时,编译器将用相应的数据类型把通用数据类型替换成所需要支持的字符集。这样很容易将代码重新编译成支持其它字符集的程序。
为了在 Visual
C++ 6.0 中激活
UNICODE
标准,可以这样做:打开工程文件后,从主菜单中选择“Project |
Settings”打开工程设置对话框
=> 然后选择“C/C++”标签
=>
在“Preprocessor definitions”编辑框中添加
UNICODE 或者
_UNICODE 预处理宏指令。如图一所示:
注意这里的 UNICODE 和
_UNICODE 有什么区别呢?前者没有下划线,专门用于
Windows 头文件;后者有一个前缀下划线,专门用于
C 运行时头文件。
在代码中,凡是用关键字 char
的地方都用 TCHAR
取代;凡是用 char
* 的地方都用
LPTSTR 取代;凡是定义在双引号中的字符串常量(如 "VCKBASE
Online Journal ")都用
TEXT 宏重写:
TEXT( "VCKBASE Online
Journal ");
TEXT 宏的主要作用是当定义了
UNICODE/_UNICODE 预处理指令时,字符串被标志为双字节字符串,否则字符串被标示为
ANSI 字符串。TEXT
的定义如下:
TEXT(
|