最近,我在windows平台上遇到了关于char/string的一些任务.我看到它们是不同的char类型,如char,TCHAR,WCHAR,LPSTR,LPWSTR,LPCTSTR.有人能给我一些有关它的信息吗?以及如何使用常规char和char*.我对这些类型感到困惑?
最好的祝福,
In *_*ico 13
它们记录在MSDN上.这里有几个:
TCHAR:定义了一个WCHARif UNICODE,CHAR否则定义了.WCHAR:16位Unicode字符.CHAR:8位Windows(ANSI)字符.LPTSTR:定义LPWSTRif UNICODE,LPSTR否则定义.LPSTR:指向以null结尾的8位Windows(ANSI)字符串的指针.LPWSTR:指向以null结尾的16位Unicode字符串的指针.LPCTSTR:定义LPCWSTRif UNICODE,LPCSTR否则定义.LPCWSTR:指向由以空字符结尾的16位Unicode字符的常量字符串的指针.LPCSTR:指向由8位Windows(ANSI)字符组成的常量以null结尾的字符串的指针.请注意,这些类型中的一些根据是否UNICODE已经#define'd' 映射到不同的类型.默认情况下,它们会解析为ANSI版本:
#include <windows.h>
// LPCTSTR resolves to LPCSTR
Run Code Online (Sandbox Code Playgroud)
在您#define UNICODE之前#include <windows.h>,他们解析为Unicode版本.
#define UNICODE
#include <windows.h>
// LPCTSTR resolves to LPCWSTR
Run Code Online (Sandbox Code Playgroud)
它们实际上typedef是C和C++语言中的一些基本类型.例如:
typedef char CHAR;
typedef wchar_t WCHAR;
Run Code Online (Sandbox Code Playgroud)
在像Visual C++这样的编译器中LPCSTR,a和a const char*或a LPCWSTR和a 之间确实没有区别const wchar_t*.然而,编译器之间可能会有所不同,这就是为什么这些数据类型首先存在的原因!
它有点像Windows API的等价物<cstdint>或<stdint.h>.Windows API具有其他语言的绑定,如果不需要,具有已知大小的数据类型很有用.
| 归档时间: |
|
| 查看次数: |
2178 次 |
| 最近记录: |