[Unreal Engine] FString API

Hongyeol Kim·2022년 1월 1일
0

언리얼 엔진

목록 보기
1/9
post-thumbnail

UDN 링크
https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling/FString/

FString

FName, FText와 다르게 검색, 변환 및 비교가 가능한 문자열 클래스. 문자열 관련 여러 기능을 제공한다. 하지만 그렇기 때문에 FName, FText에 비해 더 많은 자원을 소모한다.

생성

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

변환

String 변수

  • FString FName TestHUDName = FName(*TestHUDString);
    FString -> FName 은 손실성 변환이라 위험합니다. FName 은 대소문자를 구분하지 않기 때문입니다.
  • FString FText TestHUDText = FText::FromString(TestHUDString);
    FString -> FText 은 가능한 경우도 있지만, FString 의 내용이 FText 의 "자동 현지화" 혜택을 받지 못할 수 있음에 유념해 주시기 바랍니다.
  • FName FString TestHUDString = TestHUDName.ToString();
  • FText FString TestHUDString = TestHUDText.ToString();
    FText -> FString 은 안전하지 않습니다. 일부 언어에서는 변환시 손실될 위험이 있습니다.

숫자 및 기타 변수 : 다른 숫자 변환의 경우, FString::Printf() 함수에 적합한 인수를 곁들어 사용하면 됩니다.

  • float FString::SanitizeFloat(FloatVariable);
  • int FString::FromInt(IntVariable);
  • bool InBool ? TEXT("true") : TEXT("false"); 'true' 거나 'false' 거나
  • FVector VectorVariable.ToString(); 'X= Y= Z='
  • FVector2D Vector2DVariable.ToString(); 'X= Y='
  • FRotator RotatorVariable.ToString(); 'P= Y= R='
  • FLinearColor LinearColorVariable.ToString(); '(R=,G=,B=,A=)'
  • UObject (InObj != NULL) ? InObj->GetName() : FString(TEXT("None")); UObject 의 FName

FString 에서 int 나 float 숫자 변수로의 변환은 물론, 부울 변수로의 변환도 존재합니다.

  • bool TestHUDString.ToBool();
  • int FCString::Atoi(*TestHUDString);
  • float FCString::Atof(*TestHUDString);

비교

TestHUDString.Equals(TEXT("Test"), ESearchCase::CaseSensitive);

탐색

FString::Contains() 는 서브스트링을 찾은 경우 true 를, 아니면 false 를 반환합니다.

  • TestHUDString.Contains(TEXT("Test"), ESearchCase::CaseSensitive, ESearchDir::FromEnd);

FString::Find() 는 처음 찾은 서브스트링 인스턴스의 인덱스를 반환합니다.

  • TestHUDString.Find(TEXT("test"), ESearchCase::CaseSensitive, ESearchDir::FromEnd, 10);

조작

FString AShooterHUD::GetTimeString(float TimeSeconds)
{
    // 분과 초만 관련이 있습니다.
    const int32 TotalSeconds = FMath::Max(0, FMath::TruncToInt(TimeSeconds) % 3600);
    const int32 NumMinutes = TotalSeconds / 60;
    const int32 NumSeconds = TotalSeconds % 60;

    const FString TimeDesc = FString::Printf(TEXT("%02d:%02d"), NumMinutes, NumSeconds);
    return TimeDesc;
}
profile
Game Engine/Client Programmer

0개의 댓글