FString의 동작 원리
FString은 TCHAR의 래퍼 클래스이다
TCHAR CharArray[] = TEXT("Hello World");
UE_LOG(LogTemp, Warning, TEXT("%s"), CharArray);
FString StringArray = CharArray;
UE_LOG(LogTemp, Warning, TEXT("%s"), *StringArray);
TEXT( );는 TCHAR[ ]을 반환한다. FString은 TCHAR을 담는 동적배열 TArray의 형태로 동작한다.
다양한 함수
(1) 복사
TCHAR CharArrayWithSize[100];
FCString::Strcpy(CharArrayWithSize, StringArray.Len(), *StringArray);
(2) 탐색
if (StringArray.Contains(TEXT("World"), ESearchCase::IgnoreCase))
{
int32 Index = StringArray.Find(TEXT("World"), ESearchCase::IgnoreCase);
FString EndString = StringArray.Mid(Index);
UE_LOG(LogTemp, Warning, TEXT("%s"), *EndString);
}
대소문자 구분을 하지 않고, StringArray가 "World"를 포함하는지 확인한다. 이후 "World" 문자열이 나타난 Index를 기준으로 끝까지의 문자열을 로그로 출력한다.
(3) 분리
FString Left, Right;
if (StringArray.Split(TEXT(" "), &Left, &Right))
{
UE_LOG(LogTemp, Warning, TEXT("%s %s"), *Left, *Right);
}
공백을 기준으로 왼쪽, 오른쪽 문자열을 분리한다.
(4) int, float -> string
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);
(5) string -> int, float
int32 IntValueFromString = FCString::Atoi(*IntString);
float FloatValueFromString = FCString::Atof(*FloatString);
FName
한 번 선언되면 바꿀 수 없고, 문자열이 들어오면 해시 값을 추출해 키를 생성해 FName에 보관한다. FName 값에 저장된 값을 사용해 전역 Pool에서 원하는 자료를 검색해 반환한다. 문자를 표현하는 용도가 아닌 에셋 키를 지정하는 용도로 사용한다.
// 대소문자 구분 안 함
FName key1(TEXT("PELVIS"));
FName key2(TEXT("pelvis"));
UE_LOG(LogTemp, Log, TEXT("%s"), key1 == key2 ? TEXT("같음") : TEXT("다름"));
// 탐색으로 인한 오버헤드 방지
for(int i = 0; i < 1000; ++i)
{
FName SearchInNamePool = FName(TEXT("pelvis"));
const static FName StaticOnlyOnce(TEXT("pelvis));
}
'기타 > [강의] 이득우의 언리얼 프로그래밍 Part1' 카테고리의 다른 글
| [이득우의 언리얼] 8. 언리얼의 C++ 설계 - 컴포지션 (0) | 2026.02.06 |
|---|---|
| [이득우의 언리얼] 7. 언리얼 C++ 설계 - 인터페이스 (0) | 2026.02.04 |
| [이득우의 언리얼] 6.언리얼 오브젝트 리플렉션 시스템 2 (0) | 2026.02.04 |
| [이득우의 언리얼] 5. 언리얼 오브젝트 리플렉션 시스템 1 (0) | 2026.02.03 |
| [이득우의 언리얼] 4. 언리얼 오브젝트 시스템 (0) | 2026.01.21 |