学习vc++的第六天--微软的字符串定义

我把视频暂停到了 https://www.bilibili.com/video/av79302998?p=62

然后去看了关于字节处理的方式,因为我发现提取一个字符串出来要每次写#ifdef UNICODE挺麻烦的

于是乎我看了 https://www.bilibili.com/video/av38413272/?p=1 的所有字节处理

● 窄字节:
char、char * 、const char *
CHAR、(PCHAR、PSTR、LPSTR)、LPCSTR

● Unicode 宽字节:
wchar_t、wchar_t * 、const wchar_t *
WCHAR、(PWCHAR、PWSTR、LPWSTR)、LPCWSTR

● T 通用类型:
TCHAR、(TCHAR * 、PTCHAR、PTSTR、LPTSTR)、LPCTSTR
 
LPCTSTR类型:
L表示long指针 这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32位操作系统中, long指针和near指针及far修饰符都是为了兼容的作用。没有实际意义。
P表示这是一个指针
C表示是一个常量
T表示在Win32环境中, 有一个_T宏
STR表示这个变量是一个字符串
记忆方法: L(长)P(指针)C(常量)T(通用)STR(字符串)

原来我们只需要用通用类型处理字符串就好了..也就是其实是微软一层一层的套娃...

所以复杂是复杂,了解了定义之后就感觉不复杂了...

毕竟宏和字符串是CPP入门劝退大王...

然后cpp的string类只是上面的窄宽字节的一层套娃,加了一点成员函数,

string和CString的差别在于,string自带的成员函数少,所以CString又套了一层娃...

但是为了完善开发者对于字符串的使用,很多程序,例如QT又有QString....

为什么cpp标准它不提供完美一点的string类....

凌乱.....

⎛⎝⊙⏝⏝⊙。⎠⎞⎛⎝⓿⏝⏝⓿。⎠⎞

猜你喜欢

转载自www.cnblogs.com/JJBox/p/12535978.html