国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
關(guān)于C語言的中文字符串

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  string   //   ANSI  或者   Unicode  字符串
           );
           參數(shù)      string  為字符串指針,指向被解釋的   Unicode  或者   ANSI  字符串
在文檔中   微軟提供了包括通用類型在內(nèi)的幾種數(shù)據(jù)類型都與  ASCII   和  UNICODE兼容。這一點可以參考微軟在線文檔有關(guān)“通用數(shù)據(jù)類型和數(shù)據(jù)類型”的章節(jié)。

例子代碼

下面通過一些簡單的例子來進一步探討   UNICODE  編程。

使用   ASCII   字符集的“Hello,  World”:

//*********************************
//   用   MFC  實現(xiàn)的 "Hello   World! "   代碼
//*********************************

//hello.cpp

#include  <afxwin.h>

//   Declare   the  application   class
class   CHelloApp   public   CWinApp
{
public:
      virtual  BOOL   InitInstance();
};

//   Create   an  instance   of  the   application  class
CHelloApp   HelloApp;
 
//   Declare   the  main   window  class
class   CHelloWindow   public   CFrameWnd
{
      CStatic*  cs;
public:
     CHelloWindow();
};

//   The   InitInstance  function   is  called   each
//   time   the  application   first  executes.
BOOL   CHelloApp::InitInstance()
{
      m_pMainWnd  =   new  CHelloWindow();
     m_pMainWnd-> ShowWindow(m_nCmdShow);
     m_pMainWnd-> UpdateWindow();
      return  TRUE;
}

//   The   constructor  for   the  window   class
CHelloWindow::CHelloWindow()
{
      //  Create   the  window   itself
     Create(NULL,   "Hello   World! ",  WS_OVERLAPPEDWINDOW,  
                 CRect(0,0,200,200));  

      //  Create   a  static   label
      cs  =   new  CStatic();
     cs-> Create( "hello   world ",  WS_CHILD|WS_VISIBLE|SS_CENTER, 
                        CRect(50,80,150,150),  this);
}

修改上面的代碼使之支持   UNICODE  字符集,串常量必須要改成對應(yīng)的   UNICODE  字符。方法是對串常量使用TEXT   宏。這個宏將告訴預(yù)處理器檢查使用什么樣的字符標準:

//   The   constructor  for   the  window   class
CHelloWindow::CHelloWindow()
{
      //  Create   the  window   itself
     Create(NULL,   TEXT( "Hello  World! "),   WS_OVERLAPPEDWINDOW, 
                 CRect(0,0,200,200));

      //  Create   a  static   label
      cs  =   new  CStatic();
     cs-> Create(   TEXT( "hello  world! "),  WS_CHILD|WS_VISIBLE|SS_CENTER,  
                        CRect(50,80,150,150),  this);
}
當(dāng)預(yù)處理器碰到通用數(shù)據(jù)類型,它便檢查   AFXWIN.H  頭文件的   _UNICODE   定義。然后根據(jù)  UNICODE  定義插入相應(yīng)的的數(shù)據(jù)類型。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C++ 標準庫的 locale 類用法
[C++] wchar_t關(guān)鍵字使用方法
WinCE下的非常用字符串操作函數(shù)
徹底理解C、C++、WIN32與COM中的字符串 - 鏡花水月 - JavaEye技術(shù)網(wǎng)站
徹底解密C 寬字符:3、利用C運行時庫函數(shù)轉(zhuǎn)換
【轉(zhuǎn)】C/C 中l(wèi)ocale的使用
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服