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 再次调用函数,并将分配的空间传递给
     函数,获取结果.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值