Base/Unreal C++

문자열

권재현의 포트폴리오 2024. 7. 3. 23:12

< 언리얼에서 문자열을 TCHAR로 처리하는 이유 >

  • 현재 쓰고 있는 Unicode(UTF-8, UTF-16)는 1990년대 후반이 되어서야 정착되었다. 그러므로 이전에 쓰던 문자열 처리방식인 Multibyte(EUC-KR, CP949), Singlebyte(ANSI, ASCII)를 사용하는 경우도 있어서 이 또한 처리가능해야함
  • 그런데 C++ STL은 ASCII, UTF-8, UTF-16만을 지원함
  • 그래서 언리얼에서는 이러한 복잡한 상황을 간단히 해결하기 위해 TCHAR라고 하는 고유한 문자열 처리방식을 사용.
  • TCHAR정렬 상태는 UTF-16 포맷 메모리에 저장됨
  • 언리얼에서는 대부분 UTF-16을 사용. 한글을 사용하는 경우, UTF-8방식으로 저장하면 됨.

< 언리얼의 문자열 처리 방식 >

  • 유니코드를 사용하여 문자열 처리를 통일(UTF-16 사용)
  • 유니코드를 위한 언리얼 표준 캐릭터 타입 : TCHAR
  • 문자열은 TEXT매크로를 사용해 지정
  • 문자열 다루는 클래스로 FString을 제공
  • FString : TCHAR 동적 배열을 소유하고있는 헬퍼 클래스

< FString 함수 >

  • FString::Printf() = FString을 입맛대로 조립하여 저장
  • FString::Contains(TEXT(“abc”), ESearchCase::--) = FString에 TEXT를 포함하는지 검사
    • ESearchCase::CaseSensitive = 대소문자 구분O
    • ESearchCase::IgnoreCase = 대소문자 구분X

  • FString::Find(TEXT(“abc”), ESearchCase::--) = TEXT가 시작되는 위치를 찾음
  • FString::Mid(index) = 해당 위치(index)부터 마지막까지의 문자열을 반환
  • FString::Split() = TEXT를 기준으로 문자를 나눔
  • FString::FromInt(int) = int를 string으로 변환
  • FString::SanitizeFloat(float) = float을 string으로 변환

< FCString 함수 >

  • FCString::Atoi(str) = string을 int로 변환
  • FCString::Atof(str) = string을 float으로 변환

  • 언리얼 엔진에 한글이 안나올 경우, “다른이름으로저장 – 저장옵션 – 인코딩을 UTF-8로 설정”

< FName : 에셋 관리를 위해 사용되는 문자열 체계 >

  • 문자를 표현하는 용도가 아닌, 에셋 키를 지정하는 용도로 사용되며 가볍고 접근이 빠르다
  • 대소문자 구분이 없고, 한번 선언되면 바꿀 수 없음
  • 선언될 때에 int(해시값)로 변환되어 저장되기 때문에, 이를 바꾸기 위해서는 int를 string으로 다시 변환해서 바꿔야 하며, 이 과정에서 대소문자를 구분하지 않는다는 점 때문에 데이터가 깨질 위험이 높음

FString 을 사용하여 문자열 관리를 하는데 ,  이는 데이터를 많이 잡아먹으므로  FName 이나  FText 로 변환하여 사용

'Base > Unreal C++' 카테고리의 다른 글

CDO (Class Default Object)  (0) 2024.07.03
언리얼 오브젝트 (UObject)  (0) 2024.07.03
Assert  (0) 2024.07.02
Log 출력  (0) 2024.07.02
Class 상속  (0) 2024.07.02