虚幻引擎(UE4) 字符串处理

举报
Dummy 发表于 2021/11/19 00:00:40 2021/11/19
【摘要】 目录 FName FText Printf Conversions(相互转换) 编码问题 FName 当你在资源浏览器中给资源命名时, 在材质实例中动态更改一个参数,或者获取骨骼文件中的骨骼节点,使用的收拾FName。FName提供了一种非常轻量级的系统,使字符串在内存中只储存一次,尽管字符串可能重复使用。 Fname...

目录

FName

FText

Printf

Conversions(相互转换)

编码问题


FName

当你在资源浏览器中给资源命名时, 在材质实例中动态更改一个参数,或者获取骨骼文件中的骨骼节点,使用的收拾FName。FName提供了一种非常轻量级的系统,使字符串在内存中只储存一次,尽管字符串可能重复使用。

Fname 是不区分大小写,他们是不变,不能被修改,类似于常量字符串。FNames内部系统提供了非常高效的K值查询功能。另一个有用的特性是它利用hash表实现快速从字符串到FName的转换。

更多查看官方文档

FText

在虚幻4中,本地化文本的主要组件就是FText类, 所有面相用户的文本都应该是FText,它提供了如下特性来支持文本的本地化。

  • 创建本地化文本。

  • 格式化文本。

  • 从数字生成文本。

  • 从日期和时间生成文本。

  • 生成派生文本,比如字符的大小写。

创建空白FText:FText::GetEmpty(),或 FText()

更多详情查阅官方文档

FString

与FName和FText不同,FString可以被搜索、修改、与其他字符串比较。然而这些操作会使FString比常量化FName和FText的字符串更加繁琐,开销更大。因为FString储存了它自己的字母列表,而FName和FText只是储存了一个字母列表的索引,完全通过索引进行查询,并且比较相等也是纯粹通过比较索引值。

更多详情查阅官方文档

Printf

FString的函数Printf和C++中的printf函数一样能创建一个格式化的字符串FString。同样,UE_LOG宏打印一个格式化的字符串到屏幕上、Output窗口、日志文件,具体取决于UE4构建类型。

记住一点,使用它们的时候请包含相应的头文件。

Conversions(相互转换)

转换前 转换后 样例
FName FString MyString = MyFName.ToString();
FName FText MyText = FText::FromName(MyFName);
FString FName

MyName = FName(*MyString);

警告:FString->FName 是危险的转换方法,因为FName是不区分大小写的,而FString是区分了大小写的。

FString FText MyText = FText::FromString(MyString);
FText FString MyString = MyText.ToString();
FText FName 没有直接转换的方法,只有先转换为FString再转为FName
FString int32 int32 MyInt = FCString::Atoi(*MyFString);
FString float float MyFloat = FCString::Atof(*MyFString);
int32 FString FString MyString = FString::FromInt(MyInt);
float FString FString MyString = FString::SanitizeFloat(MyFloat);

编码问题

通常情况,当你需要设置一个字符串变量时,请使用TEXT("XXX")。否则字符串将被编码为ANSI码,他支持的字符是非常有限的。任何ANSI编辑的字符要编码成FString需要转为TCHAR,所以最好使用TEXT()。

文章来源: blog.csdn.net,作者:呦呦鹿鸣.,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/zhang1461376499/article/details/113384642

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。