Unreal Engine 4 C++ FString操作的几种方式

本文详细介绍了Unreal Engine 4中FString类的各种操作方法,包括Printf格式化、TArray和TMap格式化以及字符串拼接等技巧,帮助开发者更好地理解和使用UE4中的字符串处理功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Unreal Engine 4 C++ FString操作的几种方式

好记性不如烂笔头啊,还是记录一下!


1.Printf 格式化

这个和C、C++的printf用法一样,先来看一看声明

static FString Printf
(
    const TCHAR * Fmt,
    ...
)

官方有详细介绍,用法如下:

int32 i = 1;
FString Text1 = FString::Printf(TEXT("Text%d"), i);

代码运行后会Text1的值为:

"Text1"

2.Format TArray 格式化

此方法用的函数为FString::Format的TArray版本,声明如下:

static FString Format
(
    const TCHAR * InFormatString,
    const TArray < FStringFormatArg > & InOrderedArguments
)

说明下参数的作用:

  • InFormatString 是进行格式化的字符串
  • InOrderedArguments 是会对InFormatString中的{index},根据InOrderedArguments中的索引进行替换

有点难懂,直接看代码和效果会容易理解一些:

int32 i = 1;
TArray<FStringFormatArg> FormatArray;
FormatArray.Add(FStringFormatArg(i));
FString Text1 = FString::Format(TEXT("Text{0}"), FormatArray);

代码运行后会Text1的值为:

"Text1"


TArray版本还可以格式化更多的值,会用数组的第0个元素替换{0},用数组的第1个元素替换{1}。

TArray<FStringFormatArg> FormatArray;
FormatArray.Add(FStringFormatArg(1));
FormatArray.Add(FStringFormatArg(2));
FString Text1 = FString::Format(TEXT("Text{0}{1}{0}"), FormatArray);

代码运行后会Text1的值为:

"Text121"

3.Format TMap 格式化

此方法用的函数为FString::Format的TMap版本,声明如下:

static FString Format
(
    const TCHAR * InFormatString,
    const TMap < FString , FStringFormatArg > & InNamedArguments
)

说明下参数的作用:

  • InFormatString 是进行格式化的字符串
  • InNamedArguments 是会对InFormatString中的{key},根据InNamedArguments中的键值索引替换成InNamedArguments里面的值

有点难懂,直接看代码和效果会容易理解一些:

TMap<FString, FStringFormatArg> FormatMap;
FormatMap.Add(TEXT("key1"), FStringFormatArg(1));
FString Text1 = FString::Format(TEXT("Text{key1}"), FormatMap);

代码运行后会Text1的值为:

"Text1"


TMap版本也还可以格式化更多的值,会用Map的键值为key1的值替换{key1},用键值为key2的值替换{key2}。

TMap<FString, FStringFormatArg> FormatMap;
FormatMap.Add(TEXT("key1"), FStringFormatArg(1));
FormatMap.Add(TEXT("key2"), FStringFormatArg(2));
FString Text1 = FString::Format(TEXT("Text{key1}{key2}{key1}"), FormatMap);

代码运行后会Text1的值为:

"Text121"

4.字符串拼接

Unreal Engine 4 的FString重载了很多操作符,可以很方便的拼接FString:

FString Text1 = TEXT("Text") + FString::FormatAsNumber(1);

代码运行后会Text1的值为:

"Text1"
### 关于 Unreal Engine 5 中 C++ FString 的使用和示例 `FString` 是 Unreal Engine 提供的一个字符串类,用于处理动态长度的字符数据。它基于标准模板库中的 `TCHAR` 类型实现,并提供了丰富的功能来操作字符串[^4]。 以下是有关 `FString` 使用的一些常见方法及其示例: #### 基本定义与初始化 可以使用多种方式创建并初始化 `FString` 对象: ```cpp // 创建一个空字符串 FString EmptyStr; // 初始化带有默认值的字符串 FString HelloWorld = TEXT("Hello, World!"); // 动态分配字符串 FString DynamicStr(TEXT("Dynamic String")); ``` #### 字符串连接 可以通过加号 (`+`) 或者 `Append()` 方法将多个字符串组合在一起: ```cpp FString Part1 = TEXT("This is "); FString Part2 = TEXT("a test."); // 使用 "+" 运算符 FString Combined = Part1 + Part2; // 使用 Append() 函数 Part1.Append(Part2); ``` #### 格式化字符串 利用 `FString::Printf` 可以构建复杂的格式化字符串: ```cpp int32 Number = 42; float PiValue = 3.14f; FString Formatted = FString::Printf(TEXT("Number: %d, Pi Value: %.2f"), Number, PiValue); ``` #### 查找子串 查找特定子串的位置或者判断其是否存在: ```cpp FString MainStr = TEXT("Unreal Engine"); bool bContains = MainStr.Contains(TEXT("Real")); // true 如果包含指定子串 int32 IndexOfE = MainStr.Find(TEXT("E")); // 返回首次出现 'E' 的索引位置 ``` #### 替换子串 替换某个部分的内容为新的内容: ```cpp FString Original = TEXT("Old Text"); Original.ReplaceInline(TEXT("Old"), TEXT("New")); // 结果变为:"New Text" ``` #### 转换大小写 改变整个字符串的大写或小写形式: ```cpp FString LowerCaseStr = TEXT("convert me to uppercase!"); LowerCaseStr.ToUpperInline(); // 将所有字母转换成大写字母 FString UpperCaseStr = TEXT("CONVERT ME TO LOWERCASE!"); UpperCaseStr.ToLowerInline(); // 将所有字母转换成小写字母 ``` 以上展示了如何在 Unreal Engine 5 的 C++ 编程环境中有效运用 `FString` 处理各种字符串需求[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值