MFC CString::Format 문은 다양한 표현을 제공한다.
그런데 통화단위 또는 화폐단위를 표현하는 방법은 좀 낯설다.
1000000 을 1,000,000 과 같이 통화 단위로 가격을 표시 하고 싶을 땐 어떻게 처리해야 할까?
문자열 길이를 계산해서 자릿수 계산해서 화폐단위로 ","를 찍어야 할까 고민도 해봤는데.. 어렵다기 보다 귀찮다!!
화폐단위 또는 통화 단위로 금액을 표시하는 방법은 단순하지만 귀찮은 부분이 있다.
단순히 뒤에서 부터 세자리씩 끊어서 ","를 삽임하는 방법도 있지만
",120,000" 같은 현상이 발생하지 않게 문자열 길이도 계산 해 주어야 한다.
그러나 의외로 쉽게 처리하는 방법이 있다.
GetCurrencyFormat 이라는 함수다.
엑세의 Won()같은 기능을 한다 보면 된다
CURRENCYFMT CurFormat;
memset(&CurFormat,0,sizeof(CURRENCYFMT));
CurFormat.NumDigits = 3 ; ///솟수 점 자리 표기
CurFormat.LeadingZero=0; //시작 점
CurFormat.Grouping=2; //문자 분리 하여 단위 그룹으로 구분자 지정
CurFormat.lpDecimalSep="."; //숫수점 표시 문자
CurFormat.lpThousandSep=","; //그룹을 구분할 문자
CurFormat.NegativeOrder=8;
CurFormat.PositiveOrder=2; //단위 표시 방법 0=왼쪽 붙이기 2= 왼쪽 띄우기 1=오른쪽 분이기 3=우측 띄우기 NegativeOrder 와도 연관,기타는 무시
CurFormat.lpCurrencySymbol="K";//단위 표기 심벌
실행 방법
char g_szTemp[256];
int MAX_STR=256;
memset(g_szTemp,0,256);
GetCurrencyFormat(LOCALE_USER_DEFAULT, // a predefined value for // user locale
0, // operation option
TEXT("0123567.4010"), // input number (see MSDN for legal chars)
&CurFormat, // formatting specifications
g_szTemp, // output buffer
MAX_STR); // size of output buffer
Out: ->12,35,67.401 K
속성을 변경해서 출력 해보변
CURRENCYFMT CurFormat;
memset(&CurFormat,0,sizeof(CURRENCYFMT));
CurFormat.NumDigits = 0 ; ///솟수 점 자리 표기
CurFormat.LeadingZero=0; //시작 점
CurFormat.Grouping=3; //문자 분리 하여 단위 그룹으로 구분자 지정
CurFormat.lpDecimalSep="."; //숫수점 표시 문자
CurFormat.lpThousandSep=","; //그룹을 구분할 문자
CurFormat.NegativeOrder=8;
CurFormat.PositiveOrder=3; //단위 표시 방법 0=왼쪽 붙이기 2= 왼쪽 띄우기 1=오른쪽 분이기 3=우측 띄우기 NegativeOrder 와도 연관,기타는 무시
CurFormat.lpCurrencySymbol="K";//단위 표기 심벌
Out: ->123,567 K
'개발언어 > c++' 카테고리의 다른 글
템플릿 배열 사용하기 (0) | 2016.07.18 |
---|---|
VC++ 6.0툴을 사용한 디바이스 드라이버 제작방법 (0) | 2016.07.18 |
가변적으로 부동솟수점 표현하기(소수점 자리수를 입력받은 만큼 보여주기) (0) | 2016.07.18 |
프로세스간의 간단한 통신 (0) | 2016.07.18 |
강제 메모리 해제 (0) | 2016.07.18 |