gpt4 book ai didi

c++ - Windows编程中的不同字符类型

转载 作者:太空狗 更新时间:2023-10-29 19:41:06 29 4
gpt4 key购买 nike

最近遇到一些关于windows平台上char/string的任务。我看到它们是不同的字符类型,如 char、TCHAR、WCHAR、LPSTR、LPWSTR、LPCTSTR。有人可以给我一些相关信息吗?以及如何像常规 char 和 char * 一样使用。我对这些类型感到困惑?

最好的问候,

最佳答案

They are documented on MSDN .这里有一些:

  • TCHAR : 一个WCHAR如果UNICODE已定义,一个 CHAR否则。
  • WCHAR : 一个 16 位 Unicode 字符。
  • CHAR : 8 位 Windows (ANSI) 字符。
  • LPTSTR : 安LPWSTR如果UNICODE已定义,一个 LPSTR否则。
  • LPSTR : 指向 8 位 Windows (ANSI) 字符的空终止字符串的指针。
  • LPWSTR : 指向 16 位 Unicode 字符的空终止字符串的指针。
  • LPCTSTR : 安LPCWSTR如果UNICODE已定义,一个 LPCSTR否则。
  • LPCWSTR : 指向 16 位 Unicode 字符的以 null 结尾的常量字符串的指针。
  • LPCSTR : 指向 8 位 Windows (ANSI) 字符的常量 null 终止字符串的指针。

请注意,其中一些类型映射到不同的东西,这取决于 UNICODE 是否存在。一直#define 'd。默认情况下,它们解析为 ANSI 版本:

#include <windows.h>
// LPCTSTR resolves to LPCSTR

当你#define UNICODE之前#include <windows.h> , 它们解析为 Unicode 版本。

#define UNICODE
#include <windows.h>
// LPCTSTR resolves to LPCWSTR

他们在现实中typedef s 到 C 和 C++ 语言中的一些基本类型。例如:

typedef char CHAR;
typedef wchar_t WCHAR;

在像 Visual C++ 这样的编译器上,LPCSTR 之间真的没有区别。和一个 const char*LPCWSTR和一个 const wchar_t* .然而,这可能因编译器而异,这就是为什么这些数据类型首先存在的原因!

它有点像 <cstdint> 的 Windows API 等效项或 <stdint.h> . Windows API 具有其他语言的绑定(bind),如果不需要,拥有已知大小的数据类型是很有用的。

关于c++ - Windows编程中的不同字符类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3911342/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com