[UE5] Unreal Engine FString 다루기

ChangJin·2023년 9월 10일
0

Unreal Engine5

목록 보기
4/114
post-thumbnail

목차:
1. FString 만들기
2. 변환

  • String 변수
  • 숫자 및 기타 변수
  1. 비교
  2. 검색
  3. FString 조립하기
    • 접합
    • Printf
  4. FString 조작하기
  5. HUD의 FString
    • 캔버스
    • 디버그 메시징
      • 뷰포트에 출력
      • 출력 로그에 출력
  6. 인코딩 변환 매크로

1. FString 만들기

FString TestHUDString = FString(TEXT("This is my test FString."));

2. 변환

String 변수

From FString

FName TestHUDName = FName(*TestHUDString);
FString TestHUDString = TestHUDName.ToString();

FString -> FText

FText TestHUDText = FText::FromString(TestHUDString);

Otger -> FString

FString TestHUDString = TestHUDName.ToString();
FString TestHUDString = TestHUDText.ToString();

숫자 및 기타 변수

// FString으로 변환
FString FloatAsString = FString::SanitizeFloat(FloatVariable);
FString IntAsString = FString::FromInt(IntVariable);
FString BoolAsString = InBool ? TEXT("true") : TEXT("false");
FString VectorAsString = VectorVariable.ToString();
FString Vector2DAsString = Vector2DVariable.ToString();
FString RotatorAsString = RotatorVariable.ToString();
FString LinearColorAsString = LinearColorVariable.ToString();
FString ObjectName = (InObj != NULL) ? InObj->GetName() : FString(TEXT("None"));

// FString에서 변환
bool BoolValue = TestHUDString.ToBool();
int IntValue = FCString::Atoi(*TestHUDString);
float FloatValue = FCString::Atof(*TestHUDString);

3. 비교

// FString 비교
bool IsEqual = (TestHUDString == AnotherString);
bool IsEqualCaseSensitive = TestHUDString.Equals(AnotherString, ESearchCase::CaseSensitive);

4. 검색

// FString에서 검색
bool ContainsSubstring = TestHUDString.Contains(TEXT("Test"), ESearchCase::CaseSensitive, ESearchDir::FromEnd);
int32 Index = TestHUDString.Find(TEXT("Test"), ESearchCase::CaseSensitive, ESearchDir::FromEnd, 10);

5. FString 조립하기

합치기

FString ConcatenatedString = String1 + String2;
FString AppendedString = String1;
AppendedString += String2;

Printf

FString FormattedString = FString::Printf(TEXT("Value: %d, Name: %s"), IntValue, *Name);

6. FString 조작하기

// 서브스트링 조작
FString LeftSubstring = TestHUDString.Left(5);
FString RightSubstring = TestHUDString.Right(5);
FString MidSubstring = TestHUDString.Mid(5, 3);

// 스트링 분할
TArray<FString> Substrings;
TestHUDString.ParseIntoArray(Substrings, TEXT(","), true);

// 대소문자 변환
FString UpperCaseString = TestHUDString.ToUpper();
FString LowerCaseString = TestHUDString.ToLower();

7. HUD의 FString

캔버스

Canvas->DrawText(BigFont, TestHUDString, 110.0f, 110.0f);

디버그 메시징

뷰포트에 출력

GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, TestHUDString);

출력 로그에 출력

UE_LOG(LogClass, Log, TEXT("This is a testing statement. %s"), *TestHUDString);

8. 인코딩 변환 매크로

// TCHAR -> ANSI
SomeApi(TCHAR_TO_ANSI(SomeUnicodeString));

// ANSI -> TCHAR
FString UnicodeString(ANSI_TO_TCHAR(SomeAnsiString));

생각보다 양이 많은데 포인터와 주소값의 개념을 잘 알고 있으면 이해하기 수월하다.

profile
게임 프로그래머

0개의 댓글