Appearance
FString类
虚幻中有三种字符串类型:FName, FText, FString。
在虚幻中有FName,用于表示资源命名字符串,不区分大小写,不可更变,无法被操作。它们在数据表中仅存储一次。适用在各种需要命名的资源、键名等。
还有FText,是显示字符串,用户的显示文本都由该类处理,支持格式化的文本,不提供修改函数,无法进行内容修改。适用在UI上的文字。
FString,可被操作的字符串,但开销大于其他类字符串类型。适用于游戏内的长串文本。
声明以及赋值
cpp
FString str = FString(TEXT("OK"));
FString str1(TEXT("OK"));
FString str2;
UE_LOG(LogTemp, Log, TEXT("%s"), *str1);
数据转换
cpp
// 数值转FString可以使用ToString();
FVector vv(3,5,8); // 向量
vv.ToString();
FRotator rr(12,14,16); // 旋转
rr.ToString();
// 字符串转数值
FString::SanitizeFloat(6.78f);
FString::FormatAsNumber(11); // 会以格式化输出
FString::FromInt(11);
bool b = true;
b ? TEXT("true") : TEXT("false");
// 字符串转整型或浮点型
FString sNum(TEXT("55"));
FCString::Atoi(*sNum); // 将字符串转到整型
FCString::Atof(*sNum); // 将字符串转到浮点型
比较
cpp
FString str1(TEXT("AAA"));
FString str2(TEXT("AAB"));
FString str3(TEXT("AA"));
if(str1 == str2){}; // 用 == 进行比较
if(str1.Equals(str2, ESearchCase::IgnoreCase)){}; // 默认检查大小写。参数里写入条件则忽略大小写
if(str1.Contains(str3)){}; // 用Contains查找某字符串中是否包含子串
str1.Find(str3); // 查找子串出现的位置。例如:123,查找2,按下标来算应该返回1。不包含返回-1。
裁切与判空
裁切,指以某个字符为分割符,将文本裁切成多份(1~n)。
判空,指判定字符串是否为空。
cpp
FString str(TEXT("1,2,3,4"));
str.Split(TEXT(","), &Left, &Right); // 以逗号为分割
// 判空
str.IsEmpty(); // 返回布尔值
拼接
cpp
// 拼接
FString Left, Right;
Left + Right;
Left += Right;
// 拼接符拼接。假设Left是c:/,Right是data
Left / Right; // 返回c://data。注意这里的斜杠数量
// 拼接数字
FString msg = FString::Printf(TEXT("%d %d"), 20, 50);
FString msg2 = FString::Printf(TEXT("%02d"), 1); // 这里%02d指少于两位在前面补0。%02d里的两个数字,第一个表示补全内容,第二个表示检测位数。