禁止在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<ANSICHAR>(static_cast<const TCHAR*>(str)).Get() #define ANSI_TO_TCHAR(str) (TCHAR*)StringCast<TCHAR>(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:可以被操作的字符串。开销大于其他类字符串类型
标签:代表,字节,数据类型,TCHAR,C++,字符串,str,UE,ANSICHAR From: https://www.cnblogs.com/limu-zy/p/16706787.html