win32字符

#include "char.h"
#include "string.h"
#include "stdlib.h"
#include "stdio.h"
#include <windows.h>
void print_ASCII();
void print_codePage(int codePage);
void c_wchar();
void tchar();
int main()
{
 c_wchar();
 tchar();
 //c_char();
 //print_codePage(936);
 //print_ASCII();
 //print_codePage(437);
  system("pause");
 
 return 0;
}

void c_char()
{
 char *p = "中";
 int num = strlen(p);
 printf("%s,%d",p,num);

 

}

void c_wchar()
{

 wchar_t  Zcx = 'a';
 wchar_t * p = L"safda";
 int nLen = wcslen(p);
 wprintf(L"%c,%s,%d",Zcx,p,nLen); //寬字節輸出用wprintf
 wchar_t * p2 = L"我是中國人";  //寬字節需要加L
 nLen = wcslen(p2);
 wprintf(L"%s,%d",p2,nLen);//nLen == 5

 char * p3 = "我是中國人";
 nLen = strlen(p3);
 printf("%s,%d",p3,nLen);//nLen == 10
}


void tchar()
{

 TCHAR c = 'a';

 //TCHAR *p = _T("wa中國人");
 //WORD
 byte a = 00;
 byte b = 40;
    WORD c1 = MAKEWORD(a,b);

 printf("%c",c1);
}

void print_ASCII()
{

 char nIndex = 0;
 for(int i = 1;i<256;i++)
 {

  printf("%c ",i);
 }
}

void print_codePage(int codePage)
{
 SetConsoleOutputCP(codePage);
 char nIndex = 0;
 for(int i = 1;i<256;i++)
 {

  printf("%c ",i);
 }
}

 

2.2 C語言和編碼
     
    2.2.1 單字節的字符和字符串
      char cText = 'A';
      char * pszText = "ABCD";
     
    2.2.2 寬字節的字符
      wchar_t cText = 'A'
      wchar_t * pszText = L"ABCD";
     
    2.2.3 相關函數
      單字字符的函數,對應有多.寬字節的函數.
       strlen wcslen mbslen
       printf wprintf
      
    2.2.4 TCHAR
      爲了程序中可以方便的支持的Unicode和多字節
      字符等,所以使用TCHAR來定義字符和字符串.
      根據_UNICODE宏開關,會將TCHAR編譯成不同字符
      類型.
         #ifndef _UNICODE
        typedef char TCHAR
        #define __T(x) x
      #else
      typedef wchar_t TCHAR
       #define __T(x)  L##x
     #endif
   使用時,要增加TCHAR.H頭文件支持,使用
     _UNICODE 宏開關進行編譯
     
      CL window.c  /D_UNICODE
    
     #define _UNICODE
     #include "tchar.h"
    
   定義方式:
      TCAHR * pszText = __T("ABCDEF");
     
   代碼使用:使用UNICODE宏開關,通知
     編譯器選擇編譯的代碼.
    #ifndef _UNICODE
     int nLen = strlen( pszText );
    #else
     int nLen = wcslen( pszText );
    #endif

 

2.3.3 字符轉換
      int WideCharToMultiByte(
     UINT CodePage, //代碼頁
     DWORD dwFlags, //轉換方式
     LPCWSTR lpWideCharStr, //需要被轉換WCHAR地址
     int cchWideChar, //需要被轉換WCHAR的長度
     LPSTR lpMultiByteStr,//用於存放轉換後的結果BUFF
     int cchMultiByte, //BUFF的長度
     LPCSTR lpDefaultChar,//使用的缺省字符串的地址
     LPBOOL lpUsedDefaultChar //缺省字符串被使用的標識
   );
   
   int MultiByteToWideChar(
     UINT CodePage,// 代碼頁
     DWORD dwFlags,// 轉換方式
     LPCSTR lpMultiByteStr, // 需要被轉換CHAR地址
     int cchMultiByte,//需要被轉換CHAR的長度
     LPWSTR lpWideCharStr,//用於存放轉換後的結果BUFF
     int cchWideChar );//BUFF的長度
    
   使用方法:
     
    1 將要轉換的字符串,傳遞給函數,從
      返回值中獲取轉換後字符串的長度。
    2 分配字符串空間
    3 再次調用函數,並將分配的空間傳遞給
     函數,獲取結果.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章