http://blog.sina.com.cn/s/blog_7dc29ca00100uh53.html
2011.05
首先中文編碼是4個字節(jié),相當(dāng)于四個字符。
所以你要放的話,可以這樣。
char a[] = {"你好"};
printf("%s",a);
還可以以下方式存放:
char a[]="張三";
char b[]="李四";
中文數(shù)組一般是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++的字符數(shù)據(jù)類型,就是unicode編碼,char是8位字符類型,最多只能包含256種字符,許多外文字符集所含的字符數(shù)目超過256個,char型無法表示。
wchar_t數(shù)據(jù)類型一般為16位或32位,但不同的C或C++庫有不同的規(guī)定,如GNULibc規(guī)定wchar_t為32位[1],總之,wchar_t所能表示的字符數(shù)遠超char型。
標準C++中的wprintf()函數(shù)以及iostream類庫中的類和對象能提供wchar_t寬字符類型的相關(guān)操作。
#include <iostream>
#include <stdlib>
using namespace std;
void main()
{
locale loc( "chs" );//定義“區(qū)域設(shè)置”為中文方式
wcout.imbue( loc );//載入中文字符輸入方式
wchar_t str[]=L"中國";//定義寬字符數(shù)組,注意L是大寫
wcout<<str<<endl;//顯示寬字符數(shù)組,下同
wprintf(str);
system("pause");
}
-----------------------------------------------------------------------------------------
wchar_t是C/C++的字符數(shù)據(jù)類型,就是unicode編碼,char是8位字符類型,最多只能包含256種字符,許多外文字符集所含的字符數(shù)目超過256個,char型無法表示。
wchar_t數(shù)據(jù)類型一般為16位或32位,但不同的C或C++庫有不同的規(guī)定,如GNULibc規(guī)定wchar_t為32位[1],總之,wchar_t所能表示的字符數(shù)遠超char型。
標準C++中的wprintf()函數(shù)以及iostream類庫中的類和對象能提供wchar_t寬字符類型的相關(guān)操作。 #include<iostream>
#include <stdlib>
using namespace std;
void main()
{
locale loc( "chs" );//定義“區(qū)域設(shè)置”為中文方式
wcout.imbue( loc );//載入中文字符輸入方式
wchar_t str[]=L"中國";//定義寬字符數(shù)組,注意L是大寫
wcout<<str<<endl;//顯示寬字符數(shù)組,下同
wprintf(str);
system("pause");
}
------------------------------------------------------------------------------------------
UNICODE 編程入門
作者:NorthTibet
簡介
如果你編寫的程序是針對非英語國家的用戶,如中國、日本、東歐和中東地區(qū),那么你一定要熟悉 UNICODE 字符集。尤其是用 Visual C++/MFC 編寫針對上述國家和地區(qū)的用戶的程序時,如果你想讓自己的應(yīng)用程序得到更廣泛的用戶,那么必須考慮代碼 UNICODE 的兼容性,也就是說它既在 ASCII 模式下運行 ,也能在UNICODE 模式下運行。本文將介紹 UNICODE 的一些基本編程知識,澄清很多人(包括我自己)在這個問題上存在的模糊認識。對于任何使用 Visual C++ 和/或 MFC 編程的人來說,這篇文章肯定值得一讀。
UNICODE到底是什么?
UNICODE 是目前用來解決 ASCII 碼 256 個字符限制問題的一種比較流行的解決方案。大家知道,ASCII 字符集只有256個字符,用 0-255 之間的數(shù)字來表示。包括大小寫字母、數(shù)字以及少數(shù)特殊字符;如標點符號、貨幣符號等。對于大多數(shù)拉丁語言來說,這些字符已經(jīng)夠用。但是,許多亞洲和東方語言所用的字符遠遠不止256個字符。有些超過千個。人們?yōu)榱送黄?nbsp; ASCII 碼字符數(shù)的限制,試圖用一種簡單的方法來針對超過256個字符的語言編寫計算機程序。于是 UNICODE 應(yīng)運而生。UNICODE 通過用雙字節(jié)來表示一個字符,從而在更大范圍內(nèi)將數(shù)字代碼映射到多種語言的字符集。
Visual C++的解決方案
作為軟件開發(fā)人員,如何熟練有效地使用 UNICODE 呢?如果你正在用 Visual C++ 編寫程序,UNICODE 兼容性意味著你的程序是否具有國際化特征,也就是說你的應(yīng)用程序是針對本地市場還是國際市場。一旦你作出了決定,那么就得在代碼中實現(xiàn)具體細節(jié)。好在 Visual C++ 提供了很多內(nèi)建功能來支持 UNICODE,在創(chuàng)建工程時就可以利用 Visual C++ 提供的這些功能。在產(chǎn)生應(yīng)用程序框架代碼之前,AppWizard 允許開發(fā)人員決定是否支持 UNICODE。Win32 SDK 包含有一些數(shù)據(jù)類型遵循 UNICODE 編碼規(guī)則,MFC 以宏的形式提供了將一般文本轉(zhuǎn)換成 UNICODE 數(shù)據(jù)類型的途徑。開發(fā)人員只需要稍微改變一下編寫代碼的習(xí)慣便可以輕松編寫支持 UNICODE 的應(yīng)用。
字符串
C 程序員一般是用 char 關(guān)鍵字象下面這樣來聲明一個字符串?dāng)?shù)組: char str[100];
象下面這樣聲明函數(shù)原形: void strcpy( char *out, char *in );
為了將上面的聲明改成支持雙字節(jié)的 UNICODE 字符集,可以用下面的方法:
wchar_t str[100];
或者
void wcscpy( wchar_t *out, wchar_t *in );
此外,微軟還提供一種通過預(yù)處理指令來實現(xiàn) UNICODE。每當(dāng)用 Visual C++ 創(chuàng)建新工程時,只要確定是否支持另外一種字符集,則 AppWizard 將會在頭文件中插入預(yù)處理指令。這些指令告訴編譯器程序想要支持何種字符集。這樣在使用VC++提供的通用數(shù)據(jù)類型時,編譯器將用相應(yīng)的數(shù)據(jù)類型把通用數(shù)據(jù)類型替換成所需要支持的字符集。這樣很容易將代碼重新編譯成支持其它字符集的程序。
為了在 Visual C++ 6.0 中激活 UNICODE 標準,可以這樣做:打開工程文件后,從主菜單中選擇“Project | Settings”打開工程設(shè)置對話框 => 然后選擇“C/C++”標簽 => 在“Preprocessor definitions”編輯框中添加 UNICODE 或者 _UNICODE 預(yù)處理宏指令。如圖一所示:
注意這里的 UNICODE 和 _UNICODE 有什么區(qū)別呢?前者沒有下劃線,專門用于 Windows 頭文件;后者有一個前綴下劃線,專門用于 C 運行時頭文件。
在代碼中,凡是用關(guān)鍵字 char 的地方都用 TCHAR 取代;凡是用 char * 的地方都用 LPTSTR 取代;凡是定義在雙引號中的字符串常量(如 "VCKBASE Online Journal ")都用 TEXT 宏重寫:
TEXT( "VCKBASE Online Journal ");
TEXT 宏的主要作用是當(dāng)定義了 UNICODE/_UNICODE 預(yù)處理指令時,字符串被標志為雙字節(jié)字符串,否則字符串被標示為 ANSI 字符串。TEXT 的定義如下:
TEXT(
LPTSTR