본문 바로가기
C++/이게 왜 돼 ❔❔❔

[C++] 숫자 세자리 수 마다 콤마(,) 찍기

by 트럼프 2022. 2. 11.

return type : CString

2가지 방법

 

1. for 문으로 직접 만든다

CString CImageTransferSenderSimDlg::ReturnComma(CString arg_buf)
{
	CString buf;
	int nCount = 0;
	for (int i = arg_buf.GetLength()-1; i >= 0; i--)
	{
		nCount++;
		buf = arg_buf[i] + buf;
		if ((nCount % 3 == 0) && (i != 0))
		{
			buf = _T(",") + buf;
		}
	}
	return buf;
}

 

 

2. API 함수 (GetNumberFormat()) 사용

CString CImageTransferSenderSimDlg::ReturnComma(CString arg_buf)
{
  char buffer[15];
	memset(buffer, 0, sizeof(char) * 15);
	NUMBERFMT fmt = { 0, 0, 3, ".", ",", 1 };

	::GetNumberFormat(NULL, NULL, arg_buf, &fmt, buffer, strlen(arg_buf)+2);

	CString buf;
	buf = (LPCTSTR)buffer;
	return buf;
}

 

ref :

https://docs.microsoft.com/en-us/windows/win32/api/winnls/ns-winnls-numberfmta

댓글