- Unreal Engine 4 C FString操作的幾種方式
- Printf 格式化
- Format TArray 格式化
- Format TMap 格式化
- 字元串拼接
Unreal Engine 4 C++ FString操作的幾種方式
好記性不如爛筆頭啊,還是記錄一下!
1.Printf 格式化
這個和C、C++的printf用法一樣,先來看一看聲明
static FString Printf
(
const TCHAR * Fmt,
...
)
官方有詳細介紹,用法如下:
int32 i = ;
FString Text1 = FString::Printf(TEXT("Text%d"), i);
代碼運作後會Text1的值為:
2.Format TArray 格式化
此方法用的函數為FString::Format的TArray版本,聲明如下:
static FString Format
(
const TCHAR * InFormatString,
const TArray < FStringFormatArg > & InOrderedArguments
)
說明下參數的作用:
- InFormatString 是進行格式化的字元串
- InOrderedArguments 是會對InFormatString中的{index},根據InOrderedArguments中的索引進行替換
有點難懂,直接看代碼和效果會容易了解一些:
int32 i = ;
TArray<FStringFormatArg> FormatArray;
FormatArray.Add(FStringFormatArg(i));
FString Text1 = FString::Format(TEXT("Text{0}"), FormatArray);
代碼運作後會Text1的值為:
TArray版本還可以格式化更多的值,會用數組的第0個元素替換{0},用數組的第1個元素替換{1}。
TArray<FStringFormatArg> FormatArray;
FormatArray.Add(FStringFormatArg());
FormatArray.Add(FStringFormatArg());
FString Text1 = FString::Format(TEXT("Text{0}{1}{0}"), FormatArray);
代碼運作後會Text1的值為:
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());
FString Text1 = FString::Format(TEXT("Text{key1}"), FormatMap);
代碼運作後會Text1的值為:
TMap版本也還可以格式化更多的值,會用Map的鍵值為key1的值替換{key1},用鍵值為key2的值替換{key2}。
TMap<FString, FStringFormatArg> FormatMap;
FormatMap.Add(TEXT("key1"), FStringFormatArg());
FormatMap.Add(TEXT("key2"), FStringFormatArg());
FString Text1 = FString::Format(TEXT("Text{key1}{key2}{key1}"), FormatMap);
代碼運作後會Text1的值為:
4.字元串拼接
Unreal Engine 4 的FString重載了很多操作符,可以很友善的拼接FString:
FString Text1 = TEXT("Text") + FString::FormatAsNumber();
代碼運作後會Text1的值為: