Unreal Engine4 UE4中的字符串转换FString to FName Int32 Float

本文详细介绍了UE4中各种字符串类型的转换方法,包括FString到FName、std::string到FString、FString到整数及浮点数等。同时提供了从数字到FString的转换技巧,并附带了一些实用的例子。

字符串转化


  1. FString to FName
  2. std::string to FString
  3. FString and FCString Overview
  4. FString to Integer
  5. FString to Float
  6. Float/Integer to FString
  7. UE4 C++ Source Header References

All the header files I refer to in this tutorial are found in

your UE4 install directory  / Engine / Source

you will probably want to do a search for them from this point :)

Converting FString to FNames

Say we have

FString TheString = "UE4_C++_IS_Awesome";

To convert this to an FName you do:

FName ConvertedFString = FName(*TheString);

std::string to FString

#include <string>
 
//....
 
some function
{
  std::string TestString = "Happy"; 
  FString HappyString(TestString.c_str());
}

FString to std::string

#include <string>
 
//....
FString UE4Str = "Flowers";
std::string MyStdString(TCHAR_TO_UTF8(*UE4Str));

FCString Overview

Converting FString to Numbers

The * operator on FStrings returns their TCHAR* data which is what FCString functions use.

If you cant find the function you want in FStrings (UnrealString.h) then you should check out the FCString functions (CString.h)

I show how to convert from FString to FCString below:

Say we have

FString TheString = "123.021";

FString to Integer

int32 MyShinyNewInt = FCString::Atoi(*TheString);

FString to Float

float MyShinyNewFloat = FCString::Atof(*TheString);


Note that Atoi and Atof are static functions, so you use the syntax FCString::TheFunction to call it :)


Float/Integer to FString

FString NewString = FString::FromInt(YourInt);
 
FString VeryCleanString = FString::SanitizeFloat(YourFloat);

Static functions in the UnrealString.h :)

UE4 Source Header References

CString.h
UnrealString.h
NameTypes.h

See CString.h for more details and other functions like

atoi64 (string to int64)
Atod	(string to double precision float)


For a great deal of helpful functions you will also want to look at

UnrealString.h for direct manipulation of FStrings!


For more info on FNames check out
 NameTypes.h

Enjoy!

------------------------------------------------------------------------------

FArrayReaderPtr to FString

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. uint8 data[512];  
  2. FMemory::Memzero(data, 512);  
  3.   
  4. FMemory::Memcpy(data, ArrayReaderPtr->GetData(), ArrayReaderPtr->Num());  
  5. FString str = ((const char*)data);  

Array<uint8> to FString

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. TArray<uint8> content;  
  2. ...  
  3. const std::string cstr(reinterpret_cast<const char*>(content.GetData()), content.Num());  
  4. FString frameAsFString = cstr.c_str();  
  5. UE_LOG(VRSLog, Warning, TEXT("%s"), *frameAsFString);  


FString to char *  TCHAR_TO_ANSI()

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. int BP_GetColumnIndex(int resultSet, FString columnName)  
  2. {  
  3.     return GetColumnIndex(resultSet, TCHAR_TO_ANSI(*columnName));  
  4. }  
  5.     
  6. int GetColumnIndex(int iResult, const char* columnName)  
  7. {  
  8. }  



FString to TCHAR *

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. int BP_GetColumnIndex(int resultSet, FString columnName)  
  2. {  
  3.     return GetColumnIndex(resultSet, *columnName);  
  4. }  
  5.     
  6. int GetColumnIndex(int iResult, const TCHAR* columnName)  
  7. {  
  8. }  
<think>好的,我现在需要帮助用户查找Unreal Engine字符串处理的方法。用户的问题是关于UE字符串处理的方法或问题,我需要根据提供的引用内容来整理相关信息。 首先,我要回忆一下用户提供的三个引用内容。引用1提到在格式化输出时,FString需要转换成C风格字符串,使用*操作符。引用2列举了UE4中的一些头文件,比如CString.h、UnrealString.h等,并提到了转换函数如TCHAR_TO_ANSI。引用3则展示了将FString转换为std::string的例子,使用TCHAR_TO_UTF8宏。 接下来,我需要将这些信息组织成结构清晰的回答。用户可能需要的包括字符串类型介绍、格式化输出、转换方法、常用操作以及编码处理等部分。同时,用户要求生成相关问题,我需要考虑常见的后续问题,比如性能优化、编码问题、日志处理等。 需要注意的是,所有行内数学表达式要用$...$,但这个问题中可能用不上数学公式。不过要确保LaTeX语法正确,比如如果有变量的话。不过这里可能主要是代码和字符串处理,所以可能不需要数学表达式。但需要检查是否有必要的地方。 回答的结构应该分点说明,每个部分给出对应的例子和引用来源。例如,在格式化输出部分,引用1中的例子展示如何使用Printf和*操作符。在转换方法部分,引用3中的TCHAR_TO_UTF8宏,以及引用2中的TCHAR_TO_ANSI等。 另外,用户提到生成相关问题,我需要根据回答内容提出可能的相关问题,比如如何转换不同的字符串类型,如何处理编码问题,性能优化的方法等。这些问题应该能够帮助用户进一步深入学习UE字符串处理。 还需要注意使用中文回答,避免使用Markdown格式,但用户给的示例中使用了代码块,所以可能需要用代码块来展示示例代码。但根据系统级指令中的示例,用户可见层可能允许代码块,所以需要按照示例的结构来处理。 最后,确保每个引用在回答末尾正确地标注,比如[^1]、[^2]、[^3],并且相关问题部分列举几个可能的问题。需要检查是否有遗漏的信息,比如引用2提到的其他转换函数如toi64和Atod,这些也应该包含在回答中。 总结一下,回答应该包括以下几个部分: 1. 字符串类型介绍(FString、TCHAR等) 2. 格式化输出方法(使用Printf和转换C风格字符串) 3. 字符串转换方法(FString与std::string、ANSI、UTF8之间的转换4. 常用字符串操作(拼接、查找、分割、大小写转换) 5. 编码处理(UTF-8转换示例) 6. 引用来源标注 7. 相关问题生成 现在需要将这些内容用自然的中文组织起来,确保结构清晰,每个部分有对应的例子和引用标注。同时,注意代码示例的正确性,比如使用正确的宏和转换方法。</think>### Unreal Engine 字符串处理方法总结 #### 1. 字符串类型与基础操作 Unreal Engine 中主要使用 **FString** 作为动态字符串类型,底层基于 **TCHAR**(支持宽字符)。基础操作包括拼接、查找、分割等: ```cpp FString Path = FString("Content/Textures/") + TextureName; // 字符串拼接 int32 Index = Path.Find("Textures"); // 查找子串位置 Path.ParseIntoArray(Arr, TEXT("/")); // 按分隔符分割成数组 ``` #### 2. 格式化输出 使用 **FString::Printf** 格式化输出时需将 FString 转换为 C 风格字符串(通过 `*` 操作符): ```cpp FString Role = TEXT("Authority"); FString Output = FString::Printf(TEXT("Local Role: %s"), *Role); // *Role 转换 ``` #### 3. 字符串转换方法 - **FString ↔ std::string** 使用编码转换宏处理 UTF-8/ANSI 编码问题: ```cpp FString UEString = TEXT("中文测试"); std::string StdString = TCHAR_TO_UTF8(*UEString); // UTF-8 转换 std::string ANSIString = TCHAR_TO_ANSI(*UEString); // ANSI 转换 ``` - **FStringFName/FText** `FName Name = FName(*FString);` `FText Text = FText::FromString(FString);` #### 4. 数值转换 通过 **CString.h** 提供的函数实现字符串与数值互转: ```cpp FString NumStr = "3.14"; float FloatValue = FCString::Atod(*NumStr); // 转双精度浮点数 int64 IntValue = FCString::Atoi64(*NumStr); // 转64位整数 ``` #### 5. 编码处理 处理多语言时需注意编码规范,例如将 UE 字符串转为 UTF-8 编码的字节流[^3]: ```cpp FString ChineseText = TEXT("中国人"); std::string UTF8Bytes = TCHAR_TO_UTF8(*ChineseText); // UTF-8字节序列 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值