Program Language/C & C++

[C++] wsprintf → swprintf_s (float 문제 해결)

야곰야곰+책벌레 2021. 11. 16. 19:20
728x90
반응형

Unicode를 사용하다 보면 sprintf 대신에 wsprintf를 종종 사용하게 되는데, wsprintf는 float형을 지원하지 않는다.

#include <string>
#include <iostream>
#include <atlstr.h>
using namespace std;

int main()
{
	wchar_t txt[20];
	double  dval = 100.1;
	wsprintf(txt, L"%s : %f", L"TEST", dval);
	wcout << txt << endl;

	return 0;
}

위와 같이 실행을 하면 float이 제대로 동작하지 않는 것을 알 수 있다.

이를 경우에는 swprint_s를 사용한다.

#include <string>
#include <iostream>
#include <atlstr.h>
using namespace std;

int main()
{
	wchar_t txt[20];
	double  dval = 100.1;
	swprintf_s(txt, 20, L"%s : %f", L"TEST", dval);
	wcout << txt << endl;

	return 0;
}

 

728x90
반응형