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

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"
  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值