单字符集SBCS 多字符集 宽字符集

1.----->单字节字符集,称之为SBCS,它的所有字符都只有一个字节的长度。常见字符集有:ASCII码和扩展ASCII码。SBCS字符串由一个零字节结尾,数据类型是char。

2.------>多字节字符集(MBCS)

3.------->宽字符集(Unicode字符集)

const char * p = "Hello"; // 使用 ASCII 字符集 

const char * p = "你好";  // 使用 MBCS 字符集,由于 MBCS 完全兼容 ASCII,多数情况下,我们并不严格区分他们 

LPCSTR p = "Hello,你好";  // 意义同上 

 

const WCHAR * p = L"Hello,你好"; // 使用 UNICODE 字符集(L用来定义UNICODE字符串,L就是转换成宽字符)

LPCOLESTR p = L"Hello,你好";     // 意义同上 

 

const TCHAR * p = _T("Hello,你好"); // 如果预定义了_UNICODE,则表示使用UNICODE字符集;如果定义了_MBCS,则表示使用 

LPCTSTR p = _T("Hello,你好");       // 意义同上 

      在上面的例子中,T是非常有意思的一个符号(TCHAR、LPCTSTR、LPTSTR、_T()、TEXT()、_TEXT()...),它表示使用一种中间类型,既不明确表示使用 MBCS,也不明确表示使用 UNICODE。那到底使用哪种字符集那?嘿嘿...编译的时候决定吧。设置条件编译的方式是:VC6中,"Project\Settings...\C/C++卡片 Preprocessor definitions" 中添加或修改_MBCS、_UNICODE。为了程序的可移植性,建议使用T类型!

CString::GetLength()获得字节数的正确方法

CString str("abc我");

DWORD le0 = str.GetLength() * sizeof(TCHAR);

// 这种用法在MBCS环境下可以省略。在Unicode下,所有字符(包括ascii及中文字符), 每个字符都被定义为WHAR, 即双字节Unicode字符。该方法也正确。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值