C++字符串相关整理

来源:互联网 发布:心神战机 知乎 编辑:程序博客网 时间:2024/06/06 00:03

之前转过一篇文章,讲述了C++字符中多种类型的来源去脉,对字符处理有了一定的了解,但只是业余用C++,不常用,记不大牢,所以今天抽空再整理了一遍,列了一张相关的表格。由于这里对表格排版比较困难,所以做成了图片。

之前转的文章:http://blog.csdn.net/mostone/article/details/7397336


备注中的地址:http://blog.donews.com/holen/archive/2004/11/30/188182.aspx

由于历史的原因,造成这么多的字符类型定义,给初学者带来了不少的困惑,常常不知道要用什么。

从上表可以清晰的看到,用预定义的宏,可以省去不少麻烦,如果统一使用这种方式,只要改变预定义符,可以方便地在 DBCS 和 Unicode 之间进行转换。

虽然说,现在基本上是 unicode 的天下了,很少再使用 DBCS,但使用预定义的宏,有些 API 使用就不用指定 A/W 的后缀,会更方便直观。


再说一下类型缩写的含义,以便记忆:

TCHARText CharLPSTRLong Point to StringLPCWSTRLong Point to Constant Wide String
中文名称别称英文名称缩写字符集例长度类型定义符常量前缀例相关函数例备注单字节字符集 Single-byte character setSBCSASCII1 bytechar
LPSTR
LPCSTR char x = 'a'strcpy()
sprintf()
printf() 多字节字符集 Multi-byte character setMBCSGBK
BIG5
Shift-JIS 1-2 bytes   _mbscpy()
sprintf()
printf() 统一码
万国码
单一码
标准万国码Wide Char宽字符unicode UTF-16/UCS-22 bytewchar_t/WCHAR
LPWSTR
LPCWSTRLwchar_t x = L'a'wcscpy()
swprintf()
wprintf()UTF = Unicode/UCS Transformation Format
UCS = Universal Character Set

Unicode 的概念对我来说有点乱,这里涉及到两个标准制定组织,大家可以参考下面网页扩展阅读:http://blog.donews.com/holen/archive/2004/11/30/188182.aspx <预定义选择> _unicode defined   TCHAR
LPTSTR
LPCTSTR_T()/TEXT()TCHAR x = _T('a')_tcscpy()
_stprintf()
_tprintf()根据预定义符,在编译时确定实际类型,例:
If UNICODE
  TCHAR = wchar_t
Else
  TCHAR = char
End if其它          单字节字符 Single-byte charactersCBCSASCII1 byte     双字节字符 Double-byte charactersDBCSGBK
BIG5
Shift-JIS 1-2 bytes     

原创粉丝点击