禁止在UE中使用C++的基本数据类型,这样会影响引擎的跨平台特性

1、基本数据类型

bool 代表布尔值 (永远不要假设布尔值的大小) 。
BOOL 将不会进行编译。
TCHAR 代表字符型(永远不要假设TCHAR的大小)。
uint8 代表无符号字节(占1个字节)。
int8 代表有符号的字节(占1个字节)。
uint16 代表无符号"短整型" (占2 个字节)。
int16 代表有符号"短整型" (占2 个字节)。
uint32 代表无符号整型(占4字节)。
int32 代表带符号整型(占4字节)。
uint64 代表无符号"四字" (8个字节)。
int64 代表有符号"四字"(8个字节)。
UE float 代表单精度浮点型 (占4 个字节)。
double 代表双精度浮点型 (占8 个字节)。
PTRINT一个符号整数和一个指针一样大小(用来标记指针的大小) (永远不要假设PTRINT的大小)。
2、字符编码

编码解决的是文本问题。

3、字符类型

UE4中提供多种字符类型进行处理数据,在不同的情景下,我们需要选择不同的类型进行操作。

区别:大小不同,编码方式不同,所有的文本在进行存储的时候,编译器编译阶段会根据编码类型进行转码。

使用:通过结构体 FPlatformTypes

typedef FPlatformTypes::ANSICHAR ANSICHAR;
转码宏的使用:下列是虚幻中提供的一些转码宏

// Usage of these should be replaced with StringCasts.
#define TCHAR_TO_ANSI(str) (ANSICHAR*)StringCast(static_cast<const TCHAR*>(str)).Get()
#define ANSI_TO_TCHAR(str) (TCHAR*)StringCast(static_cast<const ANSICHAR*>(str)).Get()
#define TCHAR_TO_UTF8(str) (ANSICHAR*)FTCHARToUTF8((const TCHAR*)str).Get()
#define UTF8_TO_TCHAR(str) (TCHAR*)FUTF8ToTCHAR((const ANSICHAR*)str).Get()
4、对象字符串

FName:资源命名字符串,FName 通过一个轻型系统使用字符串。在此系统中,特定字符串即使会被重复使用,在数据表中也只存储一次。FNames 不区分大小写(大小写不是他比较的依据)。它们为不可变,无法被操作。FNames 的存储系统和静态特性决定了通过键进行 FNames 的查找和访问速度较快。FName 子系统的另一个功能是使用散列表为 FName 转换提供快速字符串。

FText:表示一个显示字符串,用户的显式文本都需要由FText进行处理。支持格式化文本,不提供修改函数,无法进行内容修改

FString:可以被操作的字符串。开销大于其他类字符串类型