字符串处理

对UE4中可用的字符串类进行介绍,并为FName、FText和FString提供了参考指南。

Choose your operating system:

Windows

macOS

Linux

本页面的内容

FName

[INCLUDE:ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling/FName#overview]
  • [FName 参考指南](ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling\FName)

FText

[INCLUDE:ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling/FText#overview]
  • [FText 参考指南](ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling\FText)

FString

[INCLUDE:ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling/FString#overview]
  • [FString 参考指南](ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling\FString)

Printf

FString 函数 Printf 可以像C++中的 printf 函数那样,使用格式化参数创建 FString 对象。类似的,UE_LOG 宏会打印一个 printf 格式化字符串到屏幕上,或者打印到日志输入和日志文件中,具体取决于当前正在运行的UE4构建类型。

注意,在使用这些字符串和转换前,你需要包含必要的头文件。你可以在各个字符串的API参考文档中,找到需要包含的头文件名单。

转换

范例

FName

FString

TestHUDString = TestHUDName.ToString();

FName

FText

TestHUDText = FText::FromName(TestHUDName);

FName -> FText 在一些情况下有效,但需注意 — FNames 内容不会从 FText 的"自动本地化"中受益。

FString

FName

TestHUDName = FName(*TestHUDString);

FString -> FName 不可靠。因为 FName 不区分大小写,所以转换存在损耗。

FString

FText

TestHUDText = FText::FromString(TestHUDString);

FString -> FText 在一些情况下有效,但需注意 — FString 内容不会从 FText 的"自动本地化"中受益。

FText

FString

TestHUDString = TestHUDText.ToString();

FText -> FString 不可靠。它在一些语言的转换中存在潜在损耗。

FText

FName

FText 到 FName 的转换不存在。但可先转换到 FString,再转换到 FName。

FText -> FString -> FName 不可靠。因为 FName 不区分大小写,所以转换存在损耗。

FString

int32

int32 TestInt = FCString::Atoi(*MyFString);

FString

float

float TestFloat = FCString::Atof(*MyFString);

int32

FString

FString TestString = FString::FromInt(MyInt);

float

FString

FString TestString = FString::SanitizeFloat(MyFloat);

编码

总体而言,设置字符串变量文字时应使用 TEXT() 宏。如未指定 TEXT() 宏,将使用 ANSI 对文字进行编码,会导致支持字符高度受限。 传入 FString 的 ANSI 文字需要完成到 TCHAR 的转换(本地万国码编码),以便更高效地使用 TEXT()。

如需编码的更多信息,请查阅

[](ProgrammingAndScripting/ProgrammingWithCPP\UnrealArchitecture\StringHandling\CharacterEncoding)
文档。

本文基于此前的虚幻引擎版本编写,未针对当前的虚幻引擎5.0版本更新过。