|
오늘도 음악을 들어며 님이 쓰신 글 :
: 정수형을 화폐단위(원화)로 바꿀려면 어떻케 해야하죠...
: 즉 3자리마다 콤마를 넣얼라고 하는데...
입출력 스트림에 기본(default)으로 적용(imbue)된 로케일(locale)은 "C"입니다.
이 상태에서 숫자를 스트림으로 출력하면 3자리마다 콤마가 붙지않습니다.
3자리마다 콤마를 붙이려면, 단지 원하는 숫자 포매팅을 지원하는 언어의 로케일을
imbue시키기만 하면 됩니다.
다음은, 출력 문자열 스트림인 ostringstream에 로케일을 imbue한 후
string으로 변환하고, 이것을 다시 표준 출력 스트림인 cout으로 출력하는 예제입니다.
(출력만 필요할 경우에는 그냥 cout에 직접 imbue해도 됩니다.)
//---------------------------------------------------------------------------
#include <iostream>
#include <sstream>
#include <string>
#pragma hdrstop
#include <locale>
//---------------------------------------------------------------------------
using namespace std;
int main()
{
ostringstream oss;
locale loc("korean"); // 물론 "english"로 해도 결과는 같습니다.
oss.imbue(loc);
oss << fixed << 12345678.4321;
string formatted_num = oss.str();
cout << formatted_num << endl;
return 0;
}
//---------------------------------------------------------------------------
|