本文主要是介绍[UE4] 常用类型数据转换FString,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
UE4 常用类型数据转换
1.FString参考
FString与其它类型互转官网文档参考https://docs.unrealengine.com/4.26/zh-CN/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling/FString/
//FString官方文档:https://docs.unrealengine.com/4.26/zh-CN/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling/FString/
//构建 FString
FString TestHUDString = FString(TEXT("This is my test FString."));
//输出 FString
UE_LOG(LogTemp, Log, TEXT("%s"), *TestHUDString );
FString转换
从 FString->FName,FString->FName->FText
从 | 到 | 范例 |
---|---|---|
FString | FName |
FString -> FName 不可靠。因为 FName 不区分大小写,所以转换存在损耗。 |
FString | FText |
FString -> FText 在一些情况下有效,但需注意 — FString 内容不会从 FText 的"自动本地化"中受益。 |
从FName->FString,FTex->FString
从 | 到 | 范例 |
---|---|---|
FName | FString |
|
FText | FString |
FText -> FString 不可靠。它在一些语言的转换中存在潜在损耗。 |
数字和其他变量到 FString
变量类型 | 从字符串转换 | 字符串格式 |
---|---|---|
float |
| |
int |
| |
bool |
| either 'true' or 'false' |
FVector |
| 'X= Y= Z=' |
FVector2D |
| 'X= Y=' |
FRotator |
| 'P= Y= R=' |
FLinearColor |
| '(R=,G=,B=,A=)' |
UObject |
| UObject's FName |
对于其他数值转换,可使用带合适参数的 FString::Printf() 函数。
// FString::Printf 格式话字符串
//输出 FString
UE_LOG(LogTemp, Log, TEXT("%s"), FString::Printf(TEXT("-- TestFuncThreeParams,%d, %d,%f"), bVal ? 1:0, iVal, fVal) );
从 FString 到 int 和浮点型数字变量,以及到布尔型变量之间也存在转换。
变量类型 | 从字符串转换 | 注解 |
---|---|---|
bool |
| |
int |
| |
float |
|
代码参考如下
{//FString to FNameFString Str = TEXT("TestString");FName Name = FName(*Str);//FName To FStringFString TargetFString = Name.ToString();}
{//std::string to FStringstd::string stdStr = "TestString";FString MyStr(stdStr.c_str());//FString To char*char* c = TCHAR_TO_UTF8(*MyStr);//FString to std::stringstd::string TargetString(TCHAR_TO_UTF8(*MyStr));//FString <-> TCHAR* 自动隐式转换const FString MyFString;const TCHAR *TCharString = *MyFString;const FString MyFString=TCharString;}
{//FString to Int32FString str = TEXT("TestString");int32 i_1 = FCString::Atoi(*str);//orint32 i_2 = atoi(TCHAR_TO_UTF8(*str));//FString to floatint32 f_1 = FCString::Atof(*str);//orint32 f_2 = atof(TCHAR_TO_UTF8(*str));//FString to boolbool bNewBool = str.ToBool();//Int32 to FStringFString TStr = FString::FromInt(123);//float to FStringFString TStr_2 = FString::SanitizeFloat(123.3f);//bool to FStringint32 b = true;FString Out= b ? TEXT("true"): TEXT("false"); }
{//FString to TCHAR*FString Str1(TEXT("TestString"));const TCHAR* MyTChar = *Str1;//FString to FTextFText MyText = FText::FromString(Str1);//FText to FNameFName Name2 = FName(*MyText.ToString());//FName to FTextFText MyText_1 = FText::FromName(Name2);}
{//FString To TArray<uint8>FString Str = "Hello UE4"; // 原数据TArray<uint8> outDataArray; // 目标数据TCHAR* CharData = Str.GetCharArray().GetData();int32 Len = FCString::Strlen(CharData);for (int i = 0; i < Len; i++){uint8* dst = (uint8*)TCHAR_TO_UTF8(CharData);outDataArray.Add(*dst);CharData++;}// or UE4方法FBase64::Decode(Str, outDataArray);//TArray<uint8> To FStringconst std::string cstr(reinterpret_cast<const char*>(outDataArray.GetData()), outDataArray.Num());FString MyStr1(cstr.c_str());// or UE4方法FString DestStr = FBase64::Encode(outDataArray);}
{// 枚举enum ETempEnum { One, Two, Three };{// 枚举转换字符串// 通过枚举类型的名字找到对应枚举类型的元数据指针(或者叫COD:class Object Defalut)const UEnum* EnumPtr = FindObject<UEnum>(ANY_PACKAGE,TEXT("ETempEnum"), true);if (EnumPtr){FString str = EnumPtr->GetNameStringByIndex(ETempEnum::Two);}}{// 字符串转换为枚举const UEnum* EnumPtr = FindObject<UEnum>(ANY_PACKAGE,TEXT("ETempEnum"), true);if (EnumPtr){ETempEnum OutEnum = (ETempEnum)EnumPtr->GetIndexByNameString(TEXT("One"));}}}
{//FString To Md5FString String("sdsafasfasf");FMD5::HashAnsiString(*String);// FString To Sha1FSHA1 Sha1Gen;Sha1Gen.Update((unsigned char*)TCHAR_TO_ANSI(*String), FCString::Strlen(*String));Sha1Gen.Final();FString Sha1String;for (int32 i = 0; i < 20; i++){Sha1String += FString::Printf(TEXT("%02x"), Sha1Gen.m_digest[i]);}}
资料以及参考:
【UE4 C++ 基础知识】<3> 基本数据类型、字符串处理及转换 - 某校不良生 - 博客园
------------------------------------------------------------------------------------------------------------------------------
[UE4]FString
FString官方文档https://docs.unrealengine.com/4.27/zh-CN/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling/FString/
这篇关于[UE4] 常用类型数据转换FString的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!