게임엔진/Unreal

[Unreal] 문자열 변환 - FName, FText, FString

ShovelingLife 2022. 7. 31. 20:49

문자열 클래스간 변환

변환 형식 변환 방법
FName → FString TestString = TestName.ToString();
FName → FText TestText = FText::FromName(TestName);
FString → FName TestName = FName(*TestString);
// 손실 위험 있음. FName이 대소문자 구분 없음
FString → FText TestText = FText::FromString(TestString);
FText → FString TestString = TestText.ToString();
// 안전하지 않음. 언어 변환시 손실 위험 때문
FText → FName FText → FString -> FName
// 직접 변환 없음
// 손실 위험 있음

FString으로 변환

변환 형식 변환 방법
float → FString FString::SanitizeFloat(FloatVariable);
FString::printf(TEXT("%f", FloatVariable));
int → FString FString::FromInt(IntVariable);
bool → FString InBool ? TEXT("true") : TEXT("false");
FVector → FString VectorVariable.ToString();
FVector2D → FString Vector2DVariable.ToString();
FRotator → FString RotatorVariable.ToString();
FLinearColor → FString LinearColorVariable.ToString();
UObject → FString (InObj != NULL) ? InObj->GetName() : FString(TEXT("None"));

기타 변환

변환 형식 변환 방법
FString → float float FloatVariable = FCString::Atof(*StringVariable);
FString → int int IntVariable = FCString::Atof(*StringVariable);
std::string → FString FString StringVariable(StdString.c_str());
FString → std::string std::string StdString(TCHAR_TO_UTF8(*StringVariable));
Enum → FName EMyState State = EMyState::Two;
UEnum* StateEnum = FindObject<UEnum>(ANY_PACKAGE, TEXT("EMyState"), true);
FName NameVariable = StateEnum->GetNameByValue(static_cast<int64>(State));
Enum → FString EMyState State = EMyState::Two;
UEnum* StateEnum = FindObject<UEnum>(ANY_PACKAGE, TEXT("EMyState"), true);

출처 : https://devjino.tistory.com/m/252