1 C运行库对字符串的处理:
str*系列: C运行库早期使用strlen strcpy等str*系列函数对char类型的字符串进行处理。
wcs*系列: C编译器内置了wchar_t这个16位宽字节类型后,使用新的wcslen wcscpy等wcs*系列的函数对wchar_t类型的字符串进行处理。
_tcs*系列: C运行库定义了宏_tcslen _tcscpy等_tcs*系列的宏定义,_tcs*系列函数在编译时根据是否预定义了宏_UNICODE而确定是采用wcs*系列函数,否则采用str*系列函数。
_tcs*_s系列: C运行库的最新安全字符串函数,为了防止缓冲区溢出而定义的新函数。
2 windows开发团队对字符串的处理:
Windows开发团队在winnt.h中定义了新的数据类型CHAR(char), WCHAR(wchar_t), TCHAR,TCHAR最终在编译时根据是否预定义了UNICODE宏而确定是CHAR还是WCHAR。
lstr*a系列: 在windows操作系统的Kernel32.dll中定义,处理CHAR类型的字符串,其实是对lstr*w的一层包装。
lstr*w系列: 在windows操作系统的Kernel32.dll中定义,处理WCHAR类型的字符串。
lstr*系列: lstr*系列函数也是在编译时才根据是否预定义了UNICODE宏来确定采用lstr*a系列函数,还是lstr*w系列函数。
使用lstr*系列有个好处,因为这个是windows api,这样写出来的程序可以不用把C运行库链接进来。
有个需要注意的是,C运行库的_UNICODE和Windows的UNICODE,两个宏,要么同时定义,要么同时不定义。C运行库前缀下划线是为了遵守那个该死的C++标准(对于不属于C++标准的宏加下划线),而Windows没有遵守那个标准。
3 除了上面的函数,还有
CString(根据UNICODE宏区分ANSI/UNICODE),TCHAR,WCAHR,CHAR,wstring, string,wchar_t
4 实践:
TEXT, _T TCHAR windows定义这些宏是为了屏蔽ascii和unicode的区别,打到自适应的效果
个人喜欢直接显示调用API,直接调用A,W函数,而不是T函数
相关推荐
本文主要探讨Windows中的字符串类型,包括C-Style字符串的变体以及微软为提高兼容性和易用性所引入的数据类型。 首先,C++中最常见的字符串类型是C-Style字符串,它是由字符(char)组成的数组,以空字符('\0')结尾。...
在C++中,最基础的字符串类型是C-Style字符串,即以空字符`\0`结尾的一系列字符数组。然而,为了适应Windows的Unicode环境,微软引入了一系列特定的字符串类型和指针类型。 首先,Windows中使用的两种基本字符类型...
在Windows编程环境中,字符串处理是至关重要的,尤其是对于软件开发来说。本文主要关注Windows中不同类型的字符串及其定义,包括C-Style字符串的变体。在C++编程中,Windows主要使用C-Style字符串,但微软(M$)针对...
这里定义了一个公共函数`LPSTRToVBString`,它接收一个字符串参数`s`,并返回一个字符串类型的结果。 #### 查找NULL字符位置: ```vb Dim nullpos& nullpos& = InStr(s$, Chr$(0)) ``` 首先,声明一个长整型变量`...
首先,我们要了解BSTR字符串类型。BSTR是微软的Automation或OLE自动化框架中定义的一种Unicode字符串格式,它包含一个头信息,存储字符串的长度,以及实际的字符串内容。由于BSTR是Unicode的,每个字符占用两个字节...
- **C++字符串完全指南(2)-各种字符串类(一)**:这一部分详细介绍了Windows API、MFC、STL、WTL和Visual C++运行库中使用的字符串类型,包括每种类型的特点和应用场景。 - **C++字符串完全指南(2)-各种字符串类-...
CString、LPCTSTR、LPTSTR、TCHAR、WCHAR、string、wchar_t、char各种类型的转发与字符集的发展演变,通过思维导图清晰表示他们之间的关系,让初学者摆脱windows编程,常常遇到的的字符集的困惑。
在Windows操作系统中,内核层(Ring0)的编程涉及到许多底层细节,其中包括字符串处理。在Ring0环境下,由于直接与硬件交互,性能是至关重要的因素。本篇将重点讲解在内核层下进行Ansi(ASCII)字符串与Unicode字符...
《C++字符串完全指南—第二部分:字符串的封装类》主要探讨了在C++中处理字符串的各种封装类,包括在Win32 API、MFC、STL、WTL和Visual C++运行时库中常见的字符串类型。这些封装类旨在解决C风格字符串(C-style ...
标题和描述中提到的关键概念包括LPTSTR、LPCSTR、LPCTSTR和LPSTR,这些都是在Windows API中常见的字符串类型指针。下面将详细讲解这些类型以及它们之间的相互转化。 1. **宽字符与多字符集**: - **宽字符(Wide ...
首先,我们要了解VC++中的两种主要的字符串类型:`std::string`(来自C++标准库)和`TCHAR`相关的字符串类型(如`LPCTSTR`、`LPTSTR`等),它们在不同的上下文中有不同的用法。`std::string`适用于纯C++环境,而`...
字符串转数字是指将字符串类型的数据转换为数字类型的数据,例如将字符串 "123" 转换为整数 123。这种转换在编程中非常常见,例如在用户输入验证、数据处理、算法实现等方面都需要进行字符串到数字的转换。 CRT ...
### 关于VC++的字符串类型及其转换 在VC++中,字符串处理是编程的重要组成部分,尤其是在Windows应用程序开发中。本文将深入探讨VC++中的几种主要字符串类型,包括`CString`、`BSTR`、`LPCTSTR`以及它们之间的关系...
1. **宽字符与多字节字符**:在Windows API中,Unicode字符串通常被称为宽字符,用W表示,如LPCWSTR类型。而ANSI字符串则称为多字节字符,用A表示,如LPCSTR类型。转换过程通常涉及`MultiByteToWideChar`和`...
书中可能详细讲解如何在程序中正确地处理字符串和文本。 9. **安全性与权限**:随着安全问题日益重要,书中的内容可能会涵盖Windows的安全模型,包括用户权限、访问控制列表(ACLs)和代码签名等。 10. **Windows...
BSTR是Windows COM接口中常用的宽字符字符串类型,它是一个指向宽字符字符串的指针,由`SysAllocString()`函数分配内存,并通过`SysFreeString()`函数释放内存。BSTR通常用于COM接口中传递字符串参数。 ### _bstr_t...
在Delphi中,我们通常使用内置的字符串类型`String`(实际上是UnicodeString)来处理文本数据。当我们需要将一个长字符串拆分成多个部分时,字符串分割就显得非常有用。这在处理CSV数据、日志文件或其他需要解析的...
首先,我们要了解Windows内核中常见的字符串类型。主要有以下几种: 1. `PCHAR` 和 `LPSTR`:这是指向ANSI字符串(单字节字符)的指针,类似于用户模式下的char*。 2. `PWCHAR` 和 `LPWSTR`:这些是Unicode字符串...
本文主要探讨了如何在各种C++字符串类型之间进行转换,包括`char *`、`wchar_t*`、`_bstr_t`、`CComBSTR`、`CString`、`std::basic_string`以及.NET框架中的`System.String`。以下是对这些转换的详细说明: 1. **从...
在C#编程中,字符串计算公式处理是一种常见的需求,特别是在财务、数据分析和其他需要动态计算的领域。例如,我们可能需要根据给定的公式来计算员工的工资,如:"基本工资+奖金-保险-个税"。这个公式表示工资是基础...