• MFC:字符串处理


    例子

    	//多字节
    	char* szTest = "abc多字节";
    	int nLen = strlen(szTest);//9
    
    	//宽字节
    	wchar_t* szTest2  = L"abc多字节";
    	int nlen2 = wcslen(szTest2);//6
    
    	//测试项目配置为Unicode
    	wchar_t* szTesz3 = TEXT("abcd");
    
    	//char* -> CString
    	CString strTest(szTest);
    
    	//CString->char* 
    	CStringA strTmp;
    	strTmp = strTest;
    	char* szTest4 = strTmp.GetBuffer();
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    TEXT

    根据项目属性自动配置

    宽字节

    加上L

    CString 转换

    CString str;
    str.Format(TEXT("nChar=%d nRepCnt=%d,nFlags=%d"),nChar,nRepCnt,nFlags);
    
    • 1
    • 2

    CString 获取char*

    //char* -> CString
    	CString strTest(szTest);
    
    	//CString->char* 
    	CStringA strTmp;
    	strTmp = strTest;
    	char* szTest4 = strTmp.GetBuffer();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    UNICODE

    两个字节表示一个字符,比如‘A’在ASCII下是一个字符,在UNICODE下是两个,高字符用0填充,汉字在ASCII下是两个字节,在UNICODE下仍旧是2个字节
    UNICODE的用处就是表示世界上各种文字

    MBCS 多字符集

    他是不定长表示世界文字的编码

    项目配置

    如果是多字符集,则LPSTR就是char*
    如果是UNICODE,则对应的是LPWSTR就是unsiged short*

    LPSTR ,LPCSTR,LPTSTR,LPCTSTR

    LPSTR :32位指针,指向一个字符串,每个字符占用一个字节
    LPCSTR:32-bit指针,指向一个常字符串

    LPTSTR :32位指针 指向一个字符串 每个字符串可能占用1字节或者2字节,取决于UNICODE是否定义
    LPCTSTR:32位指针 指向一个常字符串 每个字符串可能占用1字节或者2字节,取决于UNICODE是否定义

    LPTSTR 可以和 CString 互转

    LPTSTR  szTest5=szTest2;
    	CString strsss = szTest5;
    
    • 1
    • 2

    例子

    //根据项目配置Unicode
    	wchar_t* szTesz3 = TEXT("abcd");
    
    LPTSTR  szTest5=szTesz3;
    LPCTSTR szTest6=TEXT("qaz");
    
    	LPSTR szTest7="123";
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    宏_T

    当配UNICODE时候 _T就是L
    没有的时候就是ANSI

    	LPTSTR szTest8=new TCHAR[32];
    	TCHAR* szTest8 = _T("HELLO");
    
    • 1
    • 2

    T理解(TCHAR,LPTSTR,LPCTSTR,_T(),_TEXT()._tcsxx()…) 表示一种中间类型,即不表示多字节还是UNICODE,编译时候才决定

    _tcs函数

    _tcslen
    _tcscpy
    _tcscat
    _tcscmp

    例子

        LPTSTR  szTest5=szTest2;
    	LPCTSTR szTest6=TEXT("qaz");
    
    	LPSTR szTest7="123";
    
    	LPTSTR szTest8=new TCHAR[32];
    	TCHAR* szTest9 = _T("HELLO多字节");
    	_tcscpy(szTest8,szTest9);
    
    	int nLen3 = _tcslen(szTest9);
    	CString str12;
    	str12.Format(TEXT("nLen3=%d %d %s"),nLen3,_tcscmp(szTest8,szTest9),szTest8);
    	MessageBox(str12);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    SpringBoot + Jpa 详细使用教程(企业开发使用总结)
    Redis学习笔记(超详细,看完必会)
    剑指offer 46. 把数组排成最小的数
    【OpenCV-Python】教程:3-16 利用Grabcut交互式前景提取
    第3章 数组及字符串操作
    css 控制鼠标不能点击
    第十章《日期与时间》第7节:ZonedDateTime与OffsetDateTime
    SpringBoot注解篇之@Resource与@Autowired
    1.4 TCP/IP网络协议
    基于Python+JavaScript的面向文本分析的交互式主题建模可视化分析系统
  • 原文地址:https://blog.csdn.net/weixin_43333380/article/details/138773499