공부/WINAPI

멀티 바이트/유니코드 문자열 만들어주기(sprintf_s, wsprintf)

sudo 2021. 8. 20. 00:47

실수 타입은 유니코드 문자열로 만들 수 없으므로 멀티 바이트 문자열로 만들어줘야 하는데 그때 사용할 수 있는 함수가 sprintf_s 함수이다.

오버로드된 다른 형태도 있다. 나의 경우 이렇게 사용해줬다.

char FPSText[32] = {};
// 2번째 인자를 멀티 바이트 문자열 형태로 1번째 인자에 저장해준다
// GetFPS() 함수는 float타입을 리턴하는 함수 
sprintf_s(FPSText, "FPS : %.5f", m_Timer->GetFPS());

 

다른 타입들(ex. 정수형) 들은 wsprintf 함수로 유니코드 문자열로 만들어줄 수 있다.

TCHAR	BulletCountText[32] = {};
// 두번째 인자로 첫번째 인자에 유니코드 문자열을 만들어주는 함수
wsprintf(BulletCountText, TEXT("BulletCount : %d"), (int)m_BulletList.size());

참고로 TCHAR는 유니코드가 정의된 경우 wchar_t로 치환, 아니면 char로 치환되므로 generic하게 프로그래밍 하는데 도움이 될 것 같다.