|
@@ -1839,26 +1839,75 @@ typedef FPlatformTypes::CHAR32 UTF32CHAR;
|
|
|
1. FName:资源命名字符串,FName通过一个轻型系统使用字符串。在此系统中,特定字符串即使会被重复使用,在数据表中也只存储一次。FName不区分大小写。**他们为不可变,无法被操作**。FNames的存储系统和静态特性决定了通过键进行FNames的查找和访问速度快。FName子系统的另一个功能是使用散列表为FName转换提供快速字符串
|
|
1. FName:资源命名字符串,FName通过一个轻型系统使用字符串。在此系统中,特定字符串即使会被重复使用,在数据表中也只存储一次。FName不区分大小写。**他们为不可变,无法被操作**。FNames的存储系统和静态特性决定了通过键进行FNames的查找和访问速度快。FName子系统的另一个功能是使用散列表为FName转换提供快速字符串
|
|
|
2. FText:表示一个显示字符串,用户的显示文本都需要由FText进行处理。支持格式化文本,**不提供修改函数,无法进行内容修改**(可以用来制作国际化)
|
|
2. FText:表示一个显示字符串,用户的显示文本都需要由FText进行处理。支持格式化文本,**不提供修改函数,无法进行内容修改**(可以用来制作国际化)
|
|
|
3. FString:可以被操作的字符串。**开销大于其他字符串类型**
|
|
3. FString:可以被操作的字符串。**开销大于其他字符串类型**
|
|
|
|
|
+
|
|
|
|
|
+#### FString
|
|
|
|
|
|
|
|
```cpp
|
|
```cpp
|
|
|
- FString str = FString(TEXT("OK")); // FString构建方式1
|
|
|
|
|
- FString str1(TEXT("OK")); // FString构建方式2
|
|
|
|
|
- FString str2; // FString无初始值构建
|
|
|
|
|
|
|
+FString str = FString(TEXT("OK")); // FString构建方式1
|
|
|
|
|
+FString str1(TEXT("OK")); // FString构建方式2
|
|
|
|
|
+FString str2; // FString无初始值构建
|
|
|
|
|
+
|
|
|
|
|
+GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, str);
|
|
|
|
|
+GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, str1);
|
|
|
|
|
+
|
|
|
|
|
+// 普通数据类型转换为FString
|
|
|
|
|
+FString::SanitizeFloat(1.0f);
|
|
|
|
|
+FString::FormatAsNumber(23);
|
|
|
|
|
+FString::FromInt(10);
|
|
|
|
|
+
|
|
|
|
|
+bool b = true;
|
|
|
|
|
+b ? TEXT("true") : TEXT("false");
|
|
|
|
|
+
|
|
|
|
|
+// FString转为其他类型
|
|
|
|
|
+FCString::Atoi
|
|
|
|
|
+FCString::Atof
|
|
|
|
|
+FCString::Atod
|
|
|
|
|
+
|
|
|
|
|
+// ESearchCase::Type::CaseSensitive 比较大小写
|
|
|
|
|
+// ESearchCase::Type::IgnoreCase 不比较大小写
|
|
|
|
|
+str.Equals(str1, ESearchCase::Type::IgnoreCase); // 比较大小
|
|
|
|
|
+str.Contains(str1); // str中是否存在子字符串与str1相同,参数2 是否忽略大小写 参数3 查询方向从前往后还是从后往前
|
|
|
|
|
+str.Find(str1); // 检查str1在str中存在的位置,与Contains函数搭配使用,参数3 为起始查找位置
|
|
|
|
|
+
|
|
|
|
|
+FString source(TEXT("A*B*C*D"));
|
|
|
|
|
+FString Left; // "A"
|
|
|
|
|
+FString Right; // "B*C*D"
|
|
|
|
|
+// 根据第一个找到的切割字符串进行分割,左边的给Left,右边的给Right
|
|
|
|
|
+source.Split(TEXT("*"), &Left, &Right);
|
|
|
|
|
+GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, Left);
|
|
|
|
|
+GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, Right);
|
|
|
|
|
+
|
|
|
|
|
+// 拼接字符串
|
|
|
|
|
+Left += Right; // "AB*C*D"
|
|
|
|
|
+GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, Left);
|
|
|
|
|
+
|
|
|
|
|
+// 路径拼接符
|
|
|
|
|
+FString result =source / Left; // "A*B*C*D/AB*C*D"
|
|
|
|
|
+GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, result);
|
|
|
|
|
+
|
|
|
|
|
+// 拼接
|
|
|
|
|
+FString msg = FString::Printf(TEXT("%d %d"), 1, 2); // "1 2"
|
|
|
|
|
+GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, msg);
|
|
|
|
|
+```
|
|
|
|
|
|
|
|
- GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, str);
|
|
|
|
|
- GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, str1);
|
|
|
|
|
-
|
|
|
|
|
- // 普通数据类型转换为FString
|
|
|
|
|
- FString::SanitizeFloat(1.0f);
|
|
|
|
|
- FString::FormatAsNumber(23);
|
|
|
|
|
- FString::FromInt(10);
|
|
|
|
|
-
|
|
|
|
|
- bool b = true;
|
|
|
|
|
- b ? TEXT("true") : TEXT("false");
|
|
|
|
|
-
|
|
|
|
|
- // FString转为其他类型
|
|
|
|
|
- FCString::Atoi
|
|
|
|
|
- FCString::Atof
|
|
|
|
|
- FCString::Atod
|
|
|
|
|
|
|
+
|
|
|
|
|
+#### FName
|
|
|
|
|
+
|
|
|
|
|
+主要作用 是标记名称
|
|
|
|
|
+
|
|
|
|
|
+```cpp
|
|
|
|
|
+FName n1 = FName(TEXT("NO"));
|
|
|
|
|
+FName n2(TEXT("NO"));
|
|
|
|
|
+
|
|
|
|
|
+// 比较名称相同
|
|
|
|
|
+if (n1 == n2) {
|
|
|
|
|
+
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 输出
|
|
|
|
|
+GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, n1.ToString());
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
+#### FText
|
|
|
|
|
+
|
|
|
|
|
+
|