본문 바로가기
Unreal Engine

UE 초보 개발자를 위한 FString 완전정복

by 브랑제리 2025. 5. 2.
반응형

Unreal Engine을 처음 접하는 개발자라면, 문자열 데이터를 어떻게 다뤄야 하는지에 대해 막막할 수 있습니다. 특히 C++ 기반의 언리얼 프로젝트에서는 FString, FName, FText와 같은 다양한 문자열 클래스가 존재해 혼란을 초래하곤 합니다. 이 글에서는 그중에서도 가장 기초적이며 자주 사용되는 FString 클래스에 대해 초보자 관점에서 쉽게 설명하고, 사용 예시와 실전 팁을 제공해드립니다. 언리얼 C++ 프로그래밍을 보다 효율적으로 배우고 싶은 분께 도움이 될 것입니다.

1. FString이란 무엇인가?

FString은 Unreal Engine에서 문자열 데이터를 저장하고 처리하기 위한 클래스입니다. C++의 std::string에 해당하는 클래스이며, 유니코드 문자열을 지원하고 다양한 문자열 조작 기능을 포함하고 있어 초보자도 쉽게 활용할 수 있습니다. 특히 FString은 런타임 시 동적으로 문자열을 조작할 수 있기 때문에, 실시간으로 텍스트가 바뀌는 게임 UI나 로그 출력 등에서 매우 유용하게 사용됩니다.

Unreal의 모든 문자열 데이터는 기본적으로 TCHAR 기반이기 때문에, FString은 내부적으로 TArray<TCHAR> 형식으로 구성되어 있습니다. 이는 멀티 플랫폼 및 다국어 지원에 최적화된 방식입니다. 예를 들어, 다음과 같이 간단한 선언과 초기화가 가능합니다:

FString MyString = TEXT("Hello, Unreal!");

또한 FString은 다양한 연산자 오버로딩을 제공하므로, 문자열 연결(+), 비교(==), 검색(Contains), 치환(Replace) 등이 직관적으로 가능합니다.

2. FString 주요 메서드와 사용 예시

FString을 제대로 활용하기 위해서는 자주 사용되는 메서드들을 익혀야 합니다. Unreal Engine에서 제공하는 다양한 멤버 함수를 통해 문자열의 생성, 검색, 편집, 변환 등이 가능하며, 아래는 그중 대표적인 것들입니다:

    • Append / operator+: 문자열을 연결합니다.
FString A = "Hello ";
FString B = "World";
FString C = A + B; // "Hello World"
    • Contains: 특정 문자열 포함 여부 확인.
if (C.Contains("World")) {
    UE_LOG(LogTemp, Warning, TEXT("포함됨"));
}
    • Replace: 문자열 치환.
C.Replace(TEXT("World"), TEXT("Unreal"));
    • ToUpper / ToLower: 대소문자 변환.
C = C.ToUpper(); // "HELLO UNREAL"
    • Len: 문자열 길이 반환.
int32 Length = C.Len();
    • IsEmpty: 문자열이 비어있는지 확인.
if (C.IsEmpty()) {
    // 처리
}
    • Printf: C 스타일 포맷 문자열을 지원합니다.
int32 Score = 150;
FString Result = FString::Printf(TEXT("Your score is: %d"), Score);
UE_LOG(LogTemp, Warning, TEXT("%s"), *Result);

Printf는 고정된 형식의 문자열을 동적으로 만들 때 유용하며, 가독성과 유지보수성에서 매우 효과적입니다. 반드시 TEXT() 매크로와 함께 TCHAR 문자열을 사용해야 하며, Unreal 로그나 UI 출력에서 자주 사용됩니다.

3. FString을 사용할 때 주의할 점과 팁

FString은 강력하지만, 사용 시 몇 가지 주의할 점이 있습니다. 문자열 연산을 빈번하게 수행할 경우 메모리 할당이 반복되어 성능 저하를 초래할 수 있습니다. 특히 루프 내에서 문자열을 계속 생성하거나 붙이는 연산은 지양하는 것이 좋습니다. 대신 Reserve()를 사용해 미리 공간을 확보해주는 것이 효과적입니다.

FString LogData;
LogData.Reserve(256);

또한, FString을 FName이나 FText와 혼용할 때 타입 변환이 필요합니다.

FName NameFromString(*MyFString);
FText TextFromString = FText::FromString(MyFString);

마지막으로, 항상 TEXT() 매크로를 사용하는 습관을 들이는 것이 좋습니다. 코드 일관성을 유지하고 플랫폼 간 호환성 문제를 예방할 수 있습니다.

결론: FString으로 언리얼 문자열 마스터하기

FString은 Unreal Engine C++ 개발의 가장 기본이 되는 문자열 클래스입니다. 초보 개발자일수록 FString의 구조와 메서드를 익혀두면, 이후 FName, FText로의 확장도 훨씬 수월해집니다. 실전에서는 디버깅, 파일 처리, UI 출력 등 거의 모든 영역에 활용되기 때문에 확실히 이해하고 연습하는 것이 중요합니다. 문자열을 잘 다루는 것이 곧 언리얼 개발의 실력을 높이는 지름길입니다. 지금부터 하나씩 실습하며 익혀보세요!


✅ FString 공식 문서

🔗 Unreal Engine FString 클래스 참조 (공식 문서)

반응형