문자열 FString
언리얼 엔진(Unreal Engine)에는 FString, FName, FText의 문자열 클래스가 존재한다.
그 중 FString은 조작이 가능한 유일한 클래스이다.
변환
//FString 선언
FString TestString = FString(TEXT("My String"));
//다른 문자열 클래스로 변환
//----------------------------------
//FString에서 FName으로
//FName은 대소문자를 구분하지 않기 때문에 손실될 위험이 있다
FName TestName = FName(*TestString);
//FString에서 FText로
//FText의 자동 현지화(auto localization)의 혜택을 받지 못한다
FText TestText = FText::FromString(TestString);
//다른 문자열 클래스에서 변환
//----------------------------------
//FName에서 FString으로
TestString = TestName.ToString();
//FText에서 FString으로
//이 변환은 일부 언어에서 손실될 위험이 있다.
TestString = TestText.ToString();
//숫자 및 기타변수에서 변환
FString floatStr = FString::SanitizeFloat(FloatValue);
FString IntStr = FString::FromInt(IntValue); //int32 타입
FString BoolStr = BoolValue ? TEXT("true") : TEXT("false");
FString VectorStr = VectorValue.ToString(); //"X= Y= Z=" 의 형태
FString Vector2DStr = Vec2dValue.ToString(); //"X= Y=" 의 형태
FString RotStr = RotatorValue.ToString(); //"P= Y= R=" 의 형태
FString ColorStr = LinearColorValue.ToString(); // "(R=,G=,B=,A=)" 의 형태
FString ObjStr = UObjValue->GetName().ToString(); //UObject의 FName
//숫자나 bool변수로 변환
bool TestBool = TestString.ToBool();
int32 TestInt32 = FCString::Atoi(*TestString);
float Testfloat = FCString::Atof(*TestString);
비교
서로다른 FString을 비교할 수 있다.
오버로딩된 == 연산자를 이용해서 비교하거나 Equals 함수를 통해 비교가 가능하며
Equals 함수에는 대소문자를 무시할것인지에대한 이넘을 지정할 수 있다.
==연산자는 대소문자를 구분하지 않는 조건으로 비교한다.
Compare 함수로도 대소문자 조건을 지정하며 비교할 수 있다.
FString LTestStr = TEXT("test");
FString UTestStr = TEXT("TEST");
bool bOperator = LTestStr == UTestStr;
bool bEquals1 = LTestStr.Equals(UTestStr, ESearchCase::IgnoreCase);
bool bEquals2 = LTestStr.Equals(UTestStr, ESearchCase::CaseSensitive);
bool bCompare1 = LTestStr.Compare(UTestStr, ESearchCase::IgnoreCase);
bool bCompare2 = LTestStr.Compare(UTestStr, ESearchCase::CaseSensitive);
//bOperator = true
//bEquals1 = true
//bEquals2 = false
//bCompare1 = true
//bCompare2 = false
검색
검색에는 다음 두가지 유형이 있다.
Contains
- Contains 함수는 서브 스트링이 포함되어있는지 bool값을 반환하는 함수
- 첫번째 인자로 검색할 서브스트링을 입력
- 두번째 인자로 대소문자 무시여부를 이넘으로 지정
- 세번째 인자로 앞에서 부터 탐색할지 뒤에서 부터 탐색할지 이넘으로 지정
Find
- Find 함수는 서브스트링의 인덱스 값을 반환하는 함수
- 찾지 못할경우 -1 값을 반환
- 첫번째 인자로 검색할 서브스트링을 입력받음
- 두번째 인자로 대소문자 무시 여부를 이넘으로 지정
- 세번째 인자로 앞에서 부터 탐색할지 뒤에서 부터 탐색할지 이넘으로 지정
- 네번째 인자로 시작 인덱스 값을 지정할 수 있음
FString TestString = TEXT("Test String");
bool bContains = TestString.Contains(TEXT("Test"), ESearchCase::CaseSensitive, ESearchDir::FromStart);
int32 FindIdx1 = TestString.Find(TEXT("Str"), ESearchCase::CaseSensitive, ESearchDir::FromStart, INDEX_NONE);
int32 FindIdx2 = TestString.Find(TEXT("Str"), ESearchCase::CaseSensitive, ESearchDir::FromStart, 6);
//bContains = true
//FindIdx1 = 5
//FindIdx2 = -1
조립
스트링을 조립하는 함수는 다음 두가지가 있다.
접합
- 접합 연산자 += / + 를 사용하여 두개의 스트링을 덧붙일수 있다.
FString TestString1 = TEXT("Test");
TestString1 += TEXT(" String");
//TestString1 = "Test String"
FString TestString2 = TestString1 + TEXT(" Plus");
//TestString2 = "Test String Plus"
printf
- FString::printf 함수는 C++ printf 와 동일한 형식으로 조립되어 FString을 반환 한다.
FString TestString = FString::printf(TEXT("FString [%s], int [%d], float [%f]"), TEXT("TEST"), 1, 2.3f);
//TestString = FString [TEST], int [1], float [2.3f]
참고
반응형