UE 常用类型转换

160 阅读1分钟

FString to FName 互转

//FString To FName
FString Str = TEXT("TestString");
FName Name = FName(*Str);
//FName To FString
FString TargetFString = Name.ToString();

FString to FText 互转

//FString to FText
FText MyText = FText::FromString(Str);
//FText to FString 不可靠,在一些语言中存在损耗
FString MyString = MyText.ToString();

FString to int32 互转

//FString to int32
int32 TestInt = FCString::Atoi(*Str);  //	int32 TestInt = atoi(TCHAR_TO_UTF8(*Str))
//int32 to FString
FString TestString = FString::FromInt(TestInt);

FString to float 互转

//FString to float
float TestFloat = FCString::Atof(*Str);  //	float TestFloat1 = atof(TCHAR_TO_UTF8(*Str))
//float to FString
FString TestString = FString::SanitizeFloat(TestFloat);

FString to std::string 互转

//std::string to FString
std::string stdstr = "teststring";
FString Mystr(stdstr.c_str());
//FString to std::string
std::string MyStdString = TCHAR_TO_UTF8(*Str);//	std::string MyStdString1(TCHAR_TO_UTF8(*Str));

FString to char 互转*

//FString To char*
char* c = TCHAR_TO_UTF8(*Str);     //const TCHAR* MyTChar = *Str;
//char* to FString
FString MyFString = FString(UTF8_TO_TCHAR(c));

//TCHAR* to std::string
TCHAR* TCharString = TEXT("Hello, World!");
std::string str1(c);    //	std::string str2 = TCHAR_TO_UTF8(*Str);

//std::string to TCHAR*

    //std::string to TCHAR*
std::string str3 = TCHAR_TO_UTF8(TCharString);
TCHAR* TCStr = UTF8_TO_TCHAR(str3);  *******************暂未测试通过******************

//FString to bool

//FString to bool
bool bNewbool = Str.ToBool();

FString to TArray 互转

    #include "HAL/UnrealMemory.h"
//FString to TArray<uint8>  方式一
FString str = "str";
TArray<uint8> MyArr;
MyArr.SetNum(str.Len());
FMemory::Memcpy(MyArr.GetData(), TCHAR_TO_ANSI(*str), str.Len());
//TArray<uint8> To FString    方式一
const std::string cstr1(reinterpret_cast<const char*>(MyArr.GetData()), MyArr.Num());
FString  MyStr(UTF8_TO_TCHAR(cstr1.c_str()));
UE_LOG(LogTemp, Warning, TEXT("%s"), *MyStr);

//FString to TArray<uint8>  方式二
TCHAR* CharData = Str.GetCharArray().GetData();
int32 len = FCString::Strlen(CharData);
for (int i = 0; i < len; i++)
{
	uint8* dst = (uint8*)TCHAR_TO_UTF8(CharData);
	CharData++;
	MyArr.Add(*dst);

}
//FString to TArray<uint8>  方式二
FBase64::Decode(str, MyArr);
//TArray<uint8> To FString   方式三
FString Deststr= FBase64::Encode(MyArr);

FString to enum 互转

enum ETestEnum
{
	East,
	South,
	West,
	North,
};
//enum to FString
const UEnum* EnumPtr = FindObject<UEnum>(ANY_PACKAGE, TEXT("ETestEnum"), true); //得到枚举对象
if (EnumPtr)
{
	FString str = EnumPtr->GetNameStringByIndex(ETestEnum::East);
}
//FString to enum  
const UEnum* EnumPtr = FindObject<UEnum>(ANY_PACKAGE, TEXT("ETestEnum"), true);
if (EnumPtr)
{
	ETestEnum OutEnum = (ETestEnum)EnumPtr->GetIndexByNameString(TEXT("North"));
}

TArray64<uint8> to TArray<uint8>

    //TArray64<uint8>
//第一种
TArray<uint8> ImgData = static_cast<TArray<uint8, FDefaultAllocator>>(TArray64<uint8>);
//第二种
TArray<uint8> ImgData(TArray64<uint8>);

TCHAR* to Char* 互转

    //TCHAR* to char*
TCHAR* TCharString = TEXT("Hello, World!");
char* CharString = TCHAR_TO_ANSI(TCharString);
//char* to TCHAR*
TCHAR* TCharString1 = ANSI_TO_TCHAR(CharString);