zoukankan      html  css  js  c++  java
  • 第二章 字符和字符串处理

    /*
    1.编码格式
    UTF-16:	将每个字符编码为2-4个字节
    UTF-8:	将一些字节编码为1-4个字节,将0x0080以下的字符压缩为1字节,0x0080和0x07FF之间的字符转换为2个字节,0x0800以上的字符转换为3字节,最后,代理对被写为4字节
    UTF-32:	将每个字符编码为4个字节
    
    
    2.宽字符与宽字符串
    wchar_t aValue[2] = {'a', 'b'};		//61 00 62 00
    wchar_t* pWStr = L"Abc";			//41 00 62 00 63 00 00 00
    
    TCHAR* pStr = TEXT("123");			//31 00 32 00 33 00 00 00	Unicode环境下
    									//31 32 33 00				多字节环境下
    									//在Unicode环境下,string无法直接由TCHAR*进行构造
    									//在Unicode环境下,wstring可以由TCHAR*进行构造
    
    
    3.使用TCHAR, TEXT替换项目中的非数据流的char和wchar,其能很好的搭配string,wstring		
    #include <windows.h>
    #ifdef UNICODE
    typedef wstring m_string;
    #else 
    typedef string m_string;
    #endif
    
    m_string str = TEXT("SZN");			//不管是否是Unicode项目,此代码都可以通过编译	
    									//使用上述方法,在MFC下,使用CString时候,也能很方便的进行和m_string的转换
    
    #define _T(x)       __T(x)
    #define _TEXT(x)    __T(x)
    
    
    4.C运行库提供的字符串处理函数,常规的是str带头的,对于宽字节字符串,是以wcs替换str即可
    wchar_t* wStr = L"123";
    int nSize0 = wcslen(wStr);			//nSize0 = 3
    
    
    5.使用_t开头的_s结尾的通用字符串安全处理函数
    #include <tchar.h>
    TCHAR* wStr = TEXT("123");
    int nSize0 = _tcslen(wStr);			//nSize0 = 3	这个值不随是否是UNICODE环境所改变
    
    tchar.h头文件中的一些定义				取决于是否定义了UNICODE
    #define _tcscat		strcat
    #define _tcscat_s	strcat_s
    #define _tcscpy		strcpy
    #define _tcscpy_s	strcpy_s
    #define _tcslen		strlen
    #define _tcsnlen	strnlen
    
    #define _tcscat			wcscat
    #define _tcscat_s		wcscat_s
    #define _tcschr			wcschr
    #define _tcscpy			wcscpy
    #define _tcscpy_s		wcscpy_s
    #define _tcscspn		wcscspn
    #define _tcslen			wcslen
    #define _tcsnlen		wcsnlen
    #define _tcsncat		wcsncat
    #define _tcsncat_s		wcsncat_s
    #define _tcsncat_l		_wcsncat_l
    #define _tcsncat_s_l	_wcsncat_s_l
    #define _tcsncpy		wcsncpy
    #define _tcsncpy_s		wcsncpy_s
    #define _tcsncpy_l		_wcsncpy_l
    #define _tcsncpy_s_l	_wcsncpy_s_l
    #define _tcspbrk		wcspbrk
    #define _tcsrchr		wcsrchr
    #define _tcsspn			wcsspn
    #define _tcsstr			wcsstr
    #define _tcstok			wcstok
    #define _tcstok_s		wcstok_s
    #define _tcstok_l		_wcstok_l
    #define _tcstok_s_l		_wcstok_s_l
    
    
    6.多字节字符串转换为宽字节字符串
    // #define CP_ACP                    0           // default to ANSI code page
    // #define CP_OEMCP                  1           // default to OEM  code page
    // #define CP_MACCP                  2           // default to MAC  code page
    // #define CP_THREAD_ACP             3           // current thread's ANSI code page
    // #define CP_SYMBOL                 42          // SYMBOL translations
    // 
    // #define CP_UTF7                   65000       // UTF-7 translation
    // #define CP_UTF8                   65001       // UTF-8 translation
    
    const WCHAR* pWStrC = L"123456";
    char buff[1024] = {};
    WideCharToMultiByte(CP_ACP, 0, pWStrC, wcslen(pWStrC), buff, 1024, nullptr, nullptr);	//buff = 0x003dfa20 "123456"
    
    const char* pStrC = "123456";
    WCHAR wBuff[1024] = {};
    MultiByteToWideChar(CP_ACP, 0, pStrC, strlen(pStrC), wBuff, 1024);						//wBuff = 0x0040f0bc "123456"
    */
    

      

  • 相关阅读:
    WebView(网页视图)基本用法
    Android——ProgressBar(进度条)
    第一阶段任务
    第七周学习总结
    (HDU)1095 --A+B for Input-Output Practice (VII)(输入输出练习(VII))
    (HDU)1094 --A+B for Input-Output Practice (VI)(输入输出练习(VI))
    (HDU)1093 --A+B for Input-Output Practice (V)(输入输出练习(V))
    (HDU)1092 --A+B for Input-Output Practice (IV)(输入输出练习(IV))
    (HDU)1091 --A+B for Input-Output Practice (III)(输入输出练习(III))
    (HDU)1090 --A+B for Input-Output Practice (II)(输入输出练习(II))
  • 原文地址:https://www.cnblogs.com/szn409/p/7260816.html
Copyright © 2011-2022 走看看