Windows-字符串
LPCTSTR 用法
在Windows的C++开发中,经常碰到一些字符串的操作,比如LPCTSTR,在这里记录下它的一些知识和相关的操作。
解释
LPCTSTR把它进行拆解:
L: 表示long指针,对的还有near指针,far指针,目的是为了兼容,没有实际意义;
P: 表示指针;
C: 表示是一个常亮,const;
T: 在Win32环境下,有一个_T的宏,这个宏用来表示你的字符串是否使用UNICODE,如何你定义的UNICODE,则这个字符串表示UNICODE字符串,否则就是标准的ANSI字符;
TCHAR * s = _T("char"); // 定义UNICODE,这s为unicode,否则就是ANSI;
STR: 表示是一个字符串;
这样我们就可以理解为:const TCHAR * 是一个常量字符串;
UNICODE: const wchar_t *
ANSI: const char *
操作函数
-
int lstrlen (LPCTSTR lpString);
函数功能:该函数返回指定字符串(不包括中断字符'')字节数(ANSI版本)或者WCHAR值(Unicode版本)
返回值:当字符串为TCHAR时,返回指定字符串的长度。当为ANSI版本为字节数。如果字符串为空,返回0。
size_t strlen( const char *string );
size_t wcslen( const wchar_t *string );
函数功能:获得字符串的长度
返回值:返回string的字符个数 -
int lstrcmp(LPCTSTR s1, LPCTSTR s2);
函数功能:字符串对比, 区分大小写;
返回值:大于0,s1 > s2; 等于0,s1 == s2; 小于0,s1 < s2;
int lstrcmpi(LPCTSTR s1, LPCTSTR s2)这个函数不区分大小写 -
LPTSTR lstrcpy(LPTSTR lpString1,LPCTSTR lpString2);
函数功能:复制一个串到缓冲区。
返回值:若函数运行成功,返回值是缓冲区的指针,若函数运行失败,返回值是NULL。
LPTSTR p1 = L"1111";
TCHAR v[1024] = { 0 };
//wcscpy(v, p1);
LPTSTR pr = lstrcpy(v, p1);// pr/v = 1111
lstrcat(v, L"2222"); // pr/v = 2222
LPTSTR lstrcpyn(LPTSTR lpString1,LPCTSTR lpString2,int iMaxLength);
函数功能:复制一个串到缓冲区,最大长度为iMaxLength
作用于宽字符拷贝。
- LPTSTR lstrcat(LPWSTR lpString1,LPCWSTR lpString2);
函数功能:该函数将一个字符串附加在另一个字符串后面。
TCHAR操作函数
详见:tchar.h头文件
_tcs开头,例如:
TCHAR | wchar_t | char |
---|---|---|
_tcscpy | wcscpy | strcpy |
_tcslen | wcslen | strlen |
_tcscmp | wcscmp | strcmp |
_tcscat | wcscat | strcat |
_stprintf_s | swprintf_s | sprintf_s |
_tfopen_s | _wfopen_s | fopen_s |
wcscpy拆解成 wchar_t copy
函数原型:
int _stprintf_s( TCHAR *buffer, size_t sizeOfBuffer, const TCHAR *format [, argument] ... );
函数功能:
这个函数的主要作用是将若干个argument按照format格式存到buffer中。
_ftprintf: 往文件写入字符串。