-> 때문에 후발 언어인 C#의 경우 4바이트인 int32로 명확히 정의되어있다.
-> 언리얼은 int를 사용하지 않고 int32를 사용한다.
bool 타입
*연산자를 사용한다면 FString에 포함하고 있는 동적 배열 TArray가 포함하고 있는 첫 번째 인자의 포인터를 반환한다.
FString LogCharString = LogCharArray;
UE_LOG(LogTemp, Log, TEXT("%s"), *LogCharString);
또 FString 내부적으로는 FCString 클래스가 있다.
이 클래스는 일종의 C라이브러리에서 제공하는 기본적인 스트링 관련 함수들을 포함하고 있는 래퍼 클래스로 생각하면 된다.
그래서 FString은 데이터를 보관하지만 실제로 사용하는 유틸 함수들은 FCString을 통해가지고 진행한다.
const TCHAR* lOGcHARpTR = *LogCharString;
TCHAR* LogCharDataPtr = LogCharString.GetCharArray().GetData();
*연산자를 사용하면 const TCHAR* 타입으로 첫 번째 인자 포인터를 받고, GetCharArray().GetData() 를 사용하여 const가 안붙은 TCHAR 포인터를 가져오므로 메모리에 직접 접근해서 사용 가능하다.
TCHAR LogCharArrayWithSize[100];
FCString::Strcpy(LogCharArrayWithSize, LogCharString.Len(), *LogCharString);
다시 배열로 가져오고 싶다면 배열 크기를 선언하고, 저수준 스트링 복사를 해준다.
if (LogCharString.Contains(TEXT("unreal"), ESearchCase::IgnoreCase))
{
int32 Index = LogCharString.Find(TEXT("unreal"), ESearchCase::IgnoreCase);
FString EndString = LogCharString.Mid(Index);
UE_LOG(LogTemp, Log, TEXT("Find Test: %s"), *EndString);
}
FString Left, Right;
if (LogCharString.Split(TEXT(" "), &Left, &Right))
{
UE_LOG(LogTemp, Log, TEXT("Split Test : %s 와 %s"), *Left, *Right);
}
이 때 실행해보면
이렇게 '와' 를 제대로 출력하지 못하고 있다.
파일 -> 다른 이름으로 저장 -> 인코딩 저장 -> UTF-8 로 설정해주면 해결된다.
int32 IntValue = 32;
float FloatValue = 3.141592;
FString FloatIntString = FString::Printf(TEXT("int:%d Float:%f"), IntValue, FloatValue);
FString FloatString = FString::SanitizeFloat(FloatValue);
FString IntString = FString::FromInt(IntValue);
UE_LOG(LogTemp, Log, TEXT("%s"), *FloatIntString);
UE_LOG(LogTemp, Log, TEXT("int:%s float:%f"), *IntString, *FloatString);
FName : 에셋 관리를 위해 사용되는 문자열 체계
즉 문자열 정보는 어딘가 따로 저장이 되고, 문자열을 변환해서 해시 값과 키값이 저장이 된다. 그래서 키 값을 사용해서 Pool에 있는지 없는지를 빠르게 검출을 하고 있다면 그 값을 사용해가지고 원하는 데이터를 가져오는 형태로 구성되어 있다.
-> 실제적인 자료는 키 값만 갖고있기에 용량은 굉장히 작고 데이터가 있는지 찾거나 없으면 추가하거나 하는 행동밖에 할 수가 없다.
FName Key1(TEXT("PELVIS"));
FName Key2(TEXT("pelvis"));
UE_LOG(LogTemp, Log, TEXT("FName 비교 결과 : %s "), Key1 == Key2 ? TEXT("같음") : TEXT("다름"));
주의 사항으로는 키가 전역 Pool에 있는지 조사하는 작업을 거치기에 오버헤드가 발생할 수 있으므로 반복문 사용시에 조심하자.