|
오늘도 음악을 들어며 님이 쓰신 글 :
: 답변해주셔서 감사합니다..
: ...
아래 코드는 1998년 이후의 ANSI C++ 표준을 준수하는 컴파일러에서 컴파일해야 합니다.
: 김백일.cedar 님이 쓰신 글 :
: : 오늘도 음악을 들어며 님이 쓰신 글 :
: : : 정수형을 화폐단위(원화)로 바꿀려면 어떻케 해야하죠...
: : : 즉 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;
: : }
: : //---------------------------------------------------------------------------
: :
: :
: :
: :
|