본문 바로가기
C,C++/C++

sprintf 랩핑 버전 만들기

by woohyeon 2023. 7. 9.
반응형

spirntf 함수는 사용자가 지정한 포맷 형태로 문자열을 만들어주는 함수이다.

이 함수를 랩핑하고 싶어서 만들다가 ...을 통해 받은 가변 인자 부분을 어떻게 sprintf에 넘겨줘야 할지 몰라서 찾아보았다.

그냥 sprintf에 넘기면 인자 부분이 쓰레기 값이 나왔다.

찾아 보니 sprintf가 아닌 vsprintf를 사용해야 한다. 해당 함수 버전도 wchar 버전, safe 버전 등 다양한 게 많기 때문에 필요한 것에 맞게 찾아 사용하면 된다.

나의 경우엔 다음의 문서를 참고하였다.

https://learn.microsoft.com/ko-kr/cpp/c-runtime-library/reference/vsprintf-s-vsprintf-s-l-vswprintf-s-vswprintf-s-l?view=msvc-170 

 

vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l

자세한 정보: vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l

learn.microsoft.com

 

LPWSTR FormatString(LPCWSTR InFormatString, ...)
{
	va_list args;
	WCHAR buf[1024];

	va_start(args, InFormatString);
	vswprintf_s(buf, 1024, InFormatString, args);
	va_end(args);

	return buf;
}

 

사용 예시

 




댓글