반응형
spirntf 함수는 사용자가 지정한 포맷 형태로 문자열을 만들어주는 함수이다.
이 함수를 랩핑하고 싶어서 만들다가 ...을 통해 받은 가변 인자 부분을 어떻게 sprintf에 넘겨줘야 할지 몰라서 찾아보았다.
그냥 sprintf에 넘기면 인자 부분이 쓰레기 값이 나왔다.
찾아 보니 sprintf가 아닌 vsprintf를 사용해야 한다. 해당 함수 버전도 wchar 버전, safe 버전 등 다양한 게 많기 때문에 필요한 것에 맞게 찾아 사용하면 된다.
나의 경우엔 다음의 문서를 참고하였다.
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;
}
사용 예시
'C,C++ > C++' 카테고리의 다른 글
Unity Build(유니티 빌드)란? (0) | 2021.11.14 |
---|---|
2D vector size를 통해 초기화 하는 법 (0) | 2021.09.09 |
array를 소유하는 std::shared_ptr, deleter 설정법 (0) | 2021.02.25 |
[C++ 17] 템플릿 특수화보다 사용하기 좋은 if constexpr (0) | 2021.01.01 |
[C++] placement new - 내가 원하는 메모리에 객체를 할당하고 싶다면 (0) | 2020.12.25 |
댓글