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 *

操作函数

  1. int lstrlen (LPCTSTR lpString);
    函数功能:该函数返回指定字符串(不包括中断字符'')字节数(ANSI版本)或者WCHAR值(Unicode版本)
    返回值:当字符串为TCHAR时,返回指定字符串的长度。当为ANSI版本为字节数。如果字符串为空,返回0。
    size_t strlen( const char *string );
    size_t wcslen( const wchar_t *string );
    函数功能:获得字符串的长度
    返回值:返回string的字符个数

  2. int lstrcmp(LPCTSTR s1, LPCTSTR s2);
    函数功能:字符串对比, 区分大小写;
    返回值:大于0,s1 > s2; 等于0,s1 == s2; 小于0,s1 < s2;
    int lstrcmpi(LPCTSTR s1, LPCTSTR s2)这个函数不区分大小写

  3. 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

作用于宽字符拷贝。

  1. 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: 往文件写入字符串。

推荐阅读更多精彩内容