TIL(Today I Learned)

2026/06/16

BreadMushroom 2026. 6. 16. 20:03

TIL 쓰기전 항상 명심 할 것

작성 타이밍: 공부가 다 끝나고 쓰려고 하면 지쳐서 안쓴다. 모르는게 있을 때 즉시 적기

작성 강도: 메모가 절대로 '공부'나 '또 하나의 짐'처럼 무거워지면 안됨.


 

 

[질문] 

  • 내가 몰랐던 것 (문제): FString 자료형 변수인데 어떻게 배열처럼 인덱스로 접근 할 수 있을까?
  • 원인 (이유): FString은 문자들의 모음이기 때문에 배열처럼 인덱스로 접근할 수 있고, 문자열[i]는 i번째 문자 하나를 의미한다.
  • 정답이 "123", 입력이 "132"라면
    i 정답 입력 결과
    0 1 1 스트라이크
    1 2 3
    2 3 2
  • 코드 : 
FString AHWGameModeBase::JudgeResult(const FString& InNumberString, const FString& InGuessNumberString)
{
	int32 StrikeCount = 0;

	for (int32 i = 0; i < 3; ++i)
	{
		if (InNumberString[i] == InGuessNumberString[i])
		{
			StrikeCount++;
		}
	}
	return FString();
}

 

 

[개념] TSet <>

  • 한 줄 요약: 중복을 허용 하지않는 주머니
  • 언제 써?: 같은 값이 여러 번 들어오면 안 되는 상황에서 사용
  • 코드:
    FString Input = TEXT("112");
    
    TSet<TCHAR> UniqueDigits;
    
    for (TCHAR C : Input)
    {
        UniqueDigits.Add(C);
    }
    
    if (UniqueDigits.Num() != Input.Len())
    {
        UE_LOG(LogTemp, Warning, TEXT("중복된 문자가 있습니다."));
    }
    else
    {
        UE_LOG(LogTemp, Log, TEXT("모든 문자가 서로 다릅니다."));
    }

[개념] TCHAR 변수명

  • 한 줄 요약: 문자 하나를 담는 자료형
  • 언제 써?: FString 같은 문자열을 한 글자씩 순회하면서 검사하거나 처리할 때 사용
  • 코드:
    FString Input = TEXT("ABC");
    
    for (TCHAR C : Input)
    {
        UE_LOG(LogTemp, Log, TEXT("현재 문자: %c"), C);
    }

[함수족보] FChar::IsDigit()

  • 한 줄 요약: 전달받은 문자가 숫자 문자인지 확인하는 함수
  • 언제 써?: 문자열 입력값을 검사할 때, 각 문자가 숫자인지 확인(사용자 입력은 보통 문자열로 들어오기 때문에, 입력값이숫자로만 구성되어 있는지 확인할 때 유용하다.) 
  • 코드:
    FString Input = TEXT("12A");
    
    for (TCHAR C : Input)
    {
        if (FChar::IsDigit(C) == false)
        {
            UE_LOG(LogTemp, Warning, TEXT("숫자가 아닌 문자가 포함되어 있습니다."));
            break;
        }
    }

[함수 족보] do{...} while(false)

  • 한 줄 요약: 중간에 조건이 틀리면 break로 빠져나가기 위한 구조
  • 언제 써?: 많은 조건중 하나라도 실패하면 바로 밖으로 내보내고 싶을 때
  • 코드:
do 
{
    ...
} while (false);

 

[함수 족보] FString::Printf()

  • 한 줄 요약: 값을 원하는 형식의 문자열로 만들어주는 함수
  • 언제 써?: 숫자, 문자, 변수 값을 조합해서 하나의 FString 문자열로 만들고 싶을 때 사용
  • 코드:
    int32 StrikeCount = 1;
    int32 BallCount = 2;
    
    FString Result = FString::Printf(TEXT("%dS%dB"), StrikeCount, BallCount);

[함수 족보] Contains()

  • 한 줄 요약: 문자열 안에 특정 문자열이 포함되어 있는지 확인하는 함수
  • 언제 써?: 어떤 문자열 안에 내가 찾는 값이 들어있는지 검사할 때 사용
  • 코드:
    FString SecretNumber = TEXT("123");
    FString GuessChar = TEXT("2");
    
    if (SecretNumber.Contains(GuessChar))
    {
        UE_LOG(LogTemp, Log, TEXT("정답 안에 해당 숫자가 있습니다."));
    }

[함수 족보] FString::Len()

  • 한 줄 요약: 문자열에 들어있는 글자 개수를 반환하는 함수
  • 언제 써?: 문자열이 몇 글자인지 알아야 할 때 사용
  • 코드:
FString InChatMessageString = TEXT("Player0:123");
int Index = InChatMessageString.Len() - 3;
FString GuessNumberString = InChatMessageString.RightChop(Index);
UE_LOG(LogTemp, Log, TEXT("GuessNumberString: %s"), *GuessNumberString);

[함수 족보] RightChop()

  • 한 줄 요약: 문자열의 왼쪽에서 지정한 개수만큼 잘라내고, 남은 오른쪽 문자열을 반환하는 함수
  • 언제 써?: 문자열 앞부분은 버리고, 뒤쪽에 있는 필요한 내용만 가져오고 싶을 때 사용("Player: 123"에서 "123"만 분리할 때)
  • 코드: FString::Len()함수 코드참고

'TIL(Today I Learned)' 카테고리의 다른 글

2026/06/24  (0) 2026.06.24
2026/06/19  (0) 2026.06.19
2026/06/18  (0) 2026.06.18
2026/06/15  (0) 2026.06.15
2026/06/12  (0) 2026.06.12