Standard library header <locale>
From cppreference.net
이 헤더는 텍스트 처리 라이브러리의 일부입니다.
클래스 |
|
|
문화적 차이를 캡슐화하는 다형성 패싯들의 집합
(클래스) |
|
문자열 및 스트림 변환 |
|
|
(C++11)
(C++17에서 사용 중단됨)
(C++26에서 제거됨)
|
와이드 문자열과 바이트 문자열 간 변환 수행
(클래스 템플릿) |
|
(C++11)
(deprecated in C++17)
(removed in C++26)
|
바이트 스트림 버퍼와 와이드 스트림 버퍼 간 변환 수행
(클래스 템플릿) |
Facet 카테고리 기본 클래스 |
|
|
문자 분류 범주를 정의함
(클래스) |
|
|
문자 변환 오류를 정의함
(클래스) |
|
|
메시지 카탈로그 타입을 정의함
(클래스) |
|
|
날짜 형식 상수를 정의함
(클래스) |
|
|
통화 형식 패턴을 정의함
(클래스) |
|
Facet 카테고리 |
|
|
문자 분류 테이블을 정의함
(클래스 템플릿) |
|
|
std::ctype
의
char
타입 전문화
(클래스 템플릿 전문화) |
|
|
문자 인코딩 간 변환 (UTF-8, UTF-16, UTF-32 포함)
(클래스 템플릿) |
|
|
문자열의 사전적 비교와 해싱을 정의함
(class template) |
|
|
메시지 카탈로그로부터 문자열 검색을 구현함
(클래스 템플릿) |
|
|
입력 문자 시퀀스로부터 시간/날짜 값을
std::tm
으로 파싱합니다
(클래스 템플릿) |
|
|
std::tm
의 내용을 문자 시퀀스로 출력하기 위해 형식화
(클래스 템플릿) |
|
|
입력 문자 시퀀스에서 숫자 값을 파싱함
(클래스 템플릿) |
|
|
숫자 값을 문자 시퀀스로 출력하기 위해 형식화
(클래스 템플릿) |
|
|
숫자 구두점 규칙을 정의함
(클래스 템플릿) |
|
|
입력 문자 시퀀스에서 금액 값을 파싱하고 구성합니다
(클래스 템플릿) |
|
|
화폐 값을 문자 시퀀스로 출력하기 위해 형식화
(클래스 템플릿) |
|
|
std::money_get
과
std::money_put
에서 사용되는 통화 서식 매개변수를 정의합니다
(클래스 템플릿) |
|
로케일별 패싯 카테고리 |
|
|
지정된 로케일에 대한 시스템 제공
std::ctype
을 나타냄
(클래스 템플릿) |
|
|
명명된 로케일에 대한 시스템 제공
std::codecvt
를 나타냅니다
(클래스 템플릿) |
|
|
명명된 로케일에 대한 시스템 제공
std::messages
를 나타냄
(클래스 템플릿) |
|
|
명명된 로케일에 대한 시스템 제공
std::collate
를 나타냄
(클래스 템플릿) |
|
|
지정된 로케일에 대한 시스템 제공
std::time_get
를 나타냅니다
(클래스 템플릿) |
|
|
지정된 로케일용 시스템 제공
std::time_put
를 나타냄
(클래스 템플릿) |
|
|
명명된 로캘에 대한 시스템 제공
std::numpunct
를 나타냄
(클래스 템플릿) |
|
|
명명된 로캘에 대한 시스템 제공
std::moneypunct
를 나타냄
(클래스 템플릿) |
|
함수 |
|
로케일과 패싯 |
|
|
로케일에서 패싯을 얻음
(함수 템플릿) |
|
|
로케일이 특정 패싯을 구현하는지 확인합니다
(함수 템플릿) |
|
문자 분류 |
|
|
로캘에 의해 공백 문자로 분류되는지 확인합니다
(함수 템플릿) |
|
|
(C++11)
|
로캘에 의해 공백 문자로 분류되는지 확인합니다
(함수 템플릿) |
|
로캘에 의해 제어 문자로 분류되는지 확인합니다
(함수 템플릿) |
|
|
로캘에 의해 대문자로 분류된 문자인지 확인합니다
(함수 템플릿) |
|
|
로케일에서 문자가 소문자로 분류되는지 확인합니다
(function template) |
|
|
로캘에 의해 알파벳 문자로 분류되는지 확인합니다
(함수 템플릿) |
|
|
로캘에 의해 숫자로 분류되는 문자인지 확인합니다
(함수 템플릿) |
|
|
로캘에 의해 구두점으로 분류된 문자인지 확인합니다
(function template) |
|
|
로캘에 의해 16진수 숫자로 분류되는 문자인지 확인합니다
(function template) |
|
|
로캘에 의해 영숫자로 분류되는지 확인합니다
(함수 템플릿) |
|
|
로캘에 의해 출력 가능한 문자로 분류되는지 확인합니다
(function template) |
|
|
로캘에 의해 그래픽 문자로 분류되는지 확인합니다
(함수 템플릿) |
|
문자 변환 |
|
|
로케일의 ctype 패싯을 사용하여 문자를 대문자로 변환
(함수 템플릿) |
|
로캘의
ctype
패싯을 사용하여 문자를 소문자로 변환합니다
(함수 템플릿) |
|
시놉시스
namespace std { // locale: class locale; template <class Facet> const Facet& use_facet(const locale&); template <class Facet> bool has_facet(const locale&) noexcept; // 편의 인터페이스: template <class CharT> bool isspace (CharT c, const locale& loc); template <class CharT> bool isprint (CharT c, const locale& loc); template <class CharT> bool iscntrl (CharT c, const locale& loc); template <class CharT> bool isupper (CharT c, const locale& loc); template <class CharT> bool islower (CharT c, const locale& loc); template <class CharT> bool isalpha (CharT c, const locale& loc); template <class CharT> bool isdigit (CharT c, const locale& loc); template <class CharT> bool ispunct (CharT c, const locale& loc); template <class CharT> bool isxdigit(CharT c, const locale& loc); template <class CharT> bool isalnum (CharT c, const locale& loc); template <class CharT> bool isgraph (CharT c, const locale& loc); template <class CharT> CharT toupper(CharT c, const locale& loc); template <class CharT> CharT tolower(CharT c, const locale& loc); template <class Codecvt, class Elem = wchar_t, class Wide_alloc = std::allocator<Elem>, class Byte_alloc = std::allocator<char>> class wstring_convert; template <class Codecvt, class Elem = wchar_t, class Tr = char_traits<Elem>> class wbuffer_convert; // ctype: class ctype_base; template <class CharT> class ctype; template <> class ctype<char>; // specialization template <class CharT> class ctype_byname; class codecvt_base; template <class internT, class externT, class stateT> class codecvt; template <class internT, class externT, class stateT> class codecvt_byname; // numeric: template <class CharT, class InputIter = istreambuf_iterator<CharT>> class num_get; template <class CharT, class OutputIter = osterambuf_iterator<CharT>> class num_put; template <class CharT> class numpunct; template <class CharT> class numpunct_byname; // collation: template <class CharT> class collate; template <class CharT> class collate_byname; // 날짜와 시간: class time_base; template <class CharT, class InputIter = istreambuf_iterator<CharT>> class time_get; template <class CharT, class InputIter> = istreambuf_iterator<CharT>> class time_get_byname; template <class CharT, class OutputIter> = ostreambuf_iterator<CharT>> class time_put; template <class CharT, class OutputIter> = ostreambuf_iterator<CharT>> class time_put_byname; // money: class money_base; template <class CharT, class InputIter = istreambuf_iterator<CharT>> > class money_get; template <class CharT, class OutputIter = ostreambuf_iterator<CharT>> > class money_put; template <class CharT, bool Intl = false> class moneypunct; template <class CharT, bool Intl = false> class moneypunct_byname; // 메시지 검색: class messages_base; template <class CharT> class messages; template <class CharT> class messages_byname; }
클래스 std::locale
class locale { public: // 타입: class facet; class id; typedef int category; static const category // 여기에 할당된 값은 설명용일 뿐입니다 none = 0, collate = 0x010, ctype = 0x020, monetary = 0x040, numeric = 0x080, time = 0x100, messages = 0x200, all = collate | ctype | monetary | numeric | time | messages; // 생성/복사/소멸: locale() noexcept; locale(const locale& other) noexcept; explicit locale(const char* std_name); explicit locale(const string& std_name); locale(const locale& other, const char* std_name, category); locale(const locale& other, const string& std_name, category); template <class Facet> locale(const locale& other, Facet* f); locale(const locale& other, const locale& one, category); ~locale(); // 가상 함수가 아닙니다 const locale& operator=(const locale& other) noexcept; template <class Facet> locale combine(const locale& other) const; // 로케일 연산: basic_string<char> name() const; bool operator==(const locale& other) const; bool operator!=(const locale& other) const; template <class CharT, class Traits, class Allocator> bool operator()(const basic_string<CharT,Traits,Allocator>& s1, const basic_string<CharT,Traits,Allocator>& s2) const; // 전역 로케일 객체: static locale global(const locale&); static const locale& classic(); };
클래스 std::ctype_base
class ctype_base { public: typedef /*bitmask-type*/ mask; // 설명을 위한 숫자 값일 뿐입니다. static const mask space = 1 << 0; static const mask print = 1 << 1; static const mask cntrl = 1 << 2; static const mask upper = 1 << 3; static const mask lower = 1 << 4; static const mask alpha = 1 << 5; static const mask digit = 1 << 6; static const mask punct = 1 << 7; static const mask xdigit= 1 << 8; static const mask blank = 1 << 9; static const mask alnum = alpha | digit; static const mask graph = alnum | punct; };
클래스 std::ctype
template <class CharT> class ctype : public locale::facet, public ctype_base { public: typedef CharT char_type; explicit ctype(size_t refs = 0); bool is(mask m, CharT c) const; const CharT* is(const CharT* low, const CharT* high, mask* vec) const; const CharT* scan_is(mask m, const CharT* low, const CharT* high) const; const CharT* scan_not(mask m, const CharT* low, const CharT* high) const; CharT toupper(CharT c) const; const CharT* toupper(CharT* low, const CharT* high) const; CharT tolower(CharT c) const; const CharT* tolower(CharT* low, const CharT* high) const; CharT widen(char c) const; const char* widen(const char* low, const char* high, CharT* to) const; char narrow(CharT c, char dfault) const; const CharT* narrow(const CharT* low, const CharT*, char dfault, char* to) const; static locale::id id; protected: ~ctype(); virtual bool do_is(mask m, CharT c) const; virtual const CharT* do_is(const CharT* low, const CharT* high, mask* vec) const; virtual const CharT* do_scan_is(mask m, const CharT* low, const CharT* high) const; virtual const CharT* do_scan_not(mask m, const CharT* low, const CharT* high) const; virtual CharT do_toupper(CharT) const; virtual const CharT* do_toupper(CharT* low, const CharT* high) const; virtual CharT do_tolower(CharT) const; virtual const CharT* do_tolower(CharT* low, const CharT* high) const; virtual CharT do_widen(char) const; virtual const char* do_widen(const char* low, const char* high, CharT* dest) const; virtual char do_narrow(CharT, char dfault) const; virtual const CharT* do_narrow(const CharT* low, const CharT* high, char dfault, char* dest) const; };
클래스 std::ctype_byname
template <class CharT> class ctype_byname : public ctype<CharT> { public: typedef typename ctype<CharT>::mask mask; explicit ctype_byname(const char*, size_t refs = 0); explicit ctype_byname(const string&, size_t refs = 0); protected: ~ctype_byname(); };
클래스 std:: ctype < char >
template <> class ctype<char> : public locale::facet, public ctype_base { public: typedef char char_type; explicit ctype(const mask* tab = 0, bool del = false, size_t refs = 0); bool is(mask m, char c) const; const char* is(const char* low, const char* high, mask* vec) const; const char* scan_is (mask m, const char* low, const char* high) const; const char* scan_not(mask m, const char* low, const char* high) const; char toupper(char c) const; const char* toupper(char* low, const char* high) const; char tolower(char c) const; const char* tolower(char* low, const char* high) const; char widen(char c) const; const char* widen(const char* low, const char* high, char* to) const; char narrow(char c, char dfault) const; const char* narrow(const char* low, const char* high, char dfault, char* to) const; static locale::id id; static const size_t table_size = /* 구현 정의 */; const mask* table() const noexcept; static const mask* classic_table() noexcept; protected: ~ctype(); virtual char do_toupper(char c) const; virtual const char* do_toupper(char* low, const char* high) const; virtual char do_tolower(char c) const; virtual const char* do_tolower(char* low, const char* high) const; virtual char do_widen(char c) const; virtual const char* do_widen(const char* low, const char* high, char* to) const; virtual char do_narrow(char c, char dfault) const; virtual const char* do_narrow(const char* low, const char* high, char dfault, char* to) const; };
클래스 std::codecvt_base
class codecvt_base { public: enum result { ok, partial, error, noconv }; };
클래스 std::codecvt
template <class internT, class externT, class stateT> class codecvt : public locale::facet, public codecvt_base { public: typedef internT intern_type; typedef externT extern_type; typedef stateT state_type; explicit codecvt(size_t refs = 0); result out(stateT& state, const internT* from, const internT* from_end, const internT*& from_next, externT* to, externT* to_end, externT*& to_next) const; result unshift(stateT& state, externT* to, externT* to_end, externT*& to_next) const; result in(stateT& state, const externT* from, const externT* from_end, const externT*& from_next, internT* to, internT* to_end, internT*& to_next) const; int encoding() const noexcept; bool always_noconv() const noexcept; int length(stateT&, const externT* from, const externT* end, size_t max) const; int max_length() const noexcept; static locale::id id; protected: ~codecvt(); virtual result do_out(stateT& state, const internT* from, const internT* from_end, const internT*& from_next, externT* to, externT* to_end, externT*& to_next) const; virtual result do_in(stateT& state, const externT* from, const externT* from_end, const externT*& from_next, internT* to, internT* to_end, internT*& to_next) const; virtual result do_unshift(stateT& state, externT* to, externT* to_end, externT*& to_next) const; virtual int do_encoding() const noexcept; virtual bool do_always_noconv() const noexcept; virtual int do_length(stateT&, const externT* from, const externT* end, size_t max) const; virtual int do_max_length() const noexcept; };
클래스 std::codecvt_byname
template <class internT, class externT, class stateT> class codecvt_byname : public codecvt<internT, externT, stateT> { public: explicit codecvt_byname(const char*, size_t refs = 0); explicit codecvt_byname(const string&, size_t refs = 0); protected: ~codecvt_byname(); };
클래스 std::num_get
template <class CharT, class InputIter = istreambuf_iterator<CharT>> class num_get : public locale::facet { public: typedef CharT char_type; typedef InputIter iter_type; explicit num_get(size_t refs = 0); iter_type get(iter_type in, iter_type end, ios_base&, ios_base::iostate& err, bool& v) const; iter_type get(iter_type in, iter_type end, ios_base&, ios_base::iostate& err, long& v) const; iter_type get(iter_type in, iter_type end, ios_base&, ios_base::iostate& err, long long& v) const; iter_type get(iter_type in, iter_type end, ios_base&, ios_base::iostate& err, unsigned short& v) const; iter_type get(iter_type in, iter_type end, ios_base&, ios_base::iostate& err, unsigned int& v) const; iter_type get(iter_type in, iter_type end, ios_base&, ios_base::iostate& err, unsigned long& v) const; iter_type get(iter_type in, iter_type end, ios_base&, ios_base::iostate& err, unsigned long long& v) const; iter_type get(iter_type in, iter_type end, ios_base&, ios_base::iostate& err, float& v) const; iter_type get(iter_type in, iter_type end, ios_base&, ios_base::iostate& err, double& v) const; iter_type get(iter_type in, iter_type end, ios_base&, ios_base::iostate& err, long double& v) const; iter_type get(iter_type in, iter_type end, ios_base&, ios_base::iostate& err, void*& v) const; static locale::id id; protected: ~num_get(); virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& err, bool& v) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& err, long& v) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& err, long long& v) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& err, unsigned short& v) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& err, unsigned int& v) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& err, unsigned long& v) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& err, unsigned long long& v) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& err, float& v) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& err, double& v) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& err, long double& v) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& err, void*& v) const; };
` 태그 내에 포함되어 있어 번역이 적용되지 않았습니다. HTML 태그, 속성, 코드 내용은 원본 그대로 유지되었습니다.
클래스 std::num_put
template <class CharT, class OutputIter = ostreambuf_iterator<CharT>> class num_put : public locale::facet { public: typedef CharT char_type; typedef OutputIter iter_type; explicit num_put(size_t refs = 0); iter_type put(iter_type s, ios_base& f, char_type fill, bool v) const; iter_type put(iter_type s, ios_base& f, char_type fill, long v) const; iter_type put(iter_type s, ios_base& f, char_type fill, long long v) const; iter_type put(iter_type s, ios_base& f, char_type fill, unsigned long v) const; iter_type put(iter_type s, ios_base& f, char_type fill, unsigned long long v) const; iter_type put(iter_type s, ios_base& f, char_type fill, double v) const; iter_type put(iter_type s, ios_base& f, char_type fill, long double v) const; iter_type put(iter_type s, ios_base& f, char_type fill, const void* v) const; static locale::id id; protected: ~num_put(); virtual iter_type do_put(iter_type, ios_base&, char_type fill, bool v) const; virtual iter_type do_put(iter_type, ios_base&, char_type fill, long v) const; virtual iter_type do_put(iter_type, ios_base&, char_type fill, long long v) const; virtual iter_type do_put(iter_type, ios_base&, char_type fill, unsigned long) const; virtual iter_type do_put(iter_type, ios_base&, char_type fill, unsigned long long) const; virtual iter_type do_put(iter_type, ios_base&, char_type fill, double v) const; virtual iter_type do_put(iter_type, ios_base&, char_type fill, long double v) const; virtual iter_type do_put(iter_type, ios_base&, char_type fill, const void* v) const; };
` 블록 내의 C++ 코드는 번역에서 제외되었습니다. 지시사항에 따라 C++ 관련 용어와 코드 구조는 원본 그대로 유지되었습니다.
클래스 std::numpunct
template <class CharT> class numpunct : public locale::facet { public: typedef CharT char_type; typedef basic_string<CharT> string_type; explicit numpunct(size_t refs = 0); char_type decimal_point() const; char_type thousands_sep() const; string grouping() const; string_type truename() const; string_type falsename() const; static locale::id id; protected: ~numpunct(); // 가상 함수 virtual char_type do_decimal_point() const; virtual char_type do_thousands_sep() const; virtual string do_grouping() const; virtual string_type do_truename() const; // bool 타입용 virtual string_type do_falsename() const; // bool 타입용 };
클래스 std::numpunct_byname
template <class CharT> class numpunct_byname : public numpunct<CharT> { public: typedef CharT char_type; typedef basic_string<CharT> string_type; explicit numpunct_byname(const char*, size_t refs = 0); explicit numpunct_byname(const string&, size_t refs = 0); protected: ~numpunct_byname(); };
클래스 std::collate
template <class CharT> class collate : public locale::facet { public: typedef CharT char_type; typedef basic_string<CharT> string_type; explicit collate(size_t refs = 0); int compare(const CharT* low1, const CharT* high1, const CharT* low2, const CharT* high2) const; string_type transform(const CharT* low, const CharT* high) const; long hash(const CharT* low, const CharT* high) const; static locale::id id; protected: ~collate(); virtual int do_compare(const CharT* low1, const CharT* high1, const CharT* low2, const CharT* high2) const; virtual string_type do_transform(const CharT* low, const CharT* high) const; virtual long do_hash (const CharT* low, const CharT* high) const; };
클래스 std::collate_byname
template <class CharT> class collate_byname : public collate<CharT> { public: typedef basic_string<CharT> string_type; explicit collate_byname(const char*, size_t refs = 0); explicit collate_byname(const string&, size_t refs = 0); protected: ~collate_byname(); };
클래스 std::time_base
class time_base { public: enum dateorder { no_order, dmy, mdy, ymd, ydm }; };
클래스 std::time_get
template <class CharT, class InputIter = istreambuf_iterator<CharT>> class time_get : public locale::facet, public time_base { public: typedef CharT char_type; typedef InputIter iter_type; explicit time_get(size_t refs = 0); dateorder date_order() const; iter_type get_time(iter_type s, iter_type end, ios_base& f, ios_base::iostate& err, tm* t) const; iter_type get_date(iter_type s, iter_type end, ios_base& f, ios_base::iostate& err, tm* t) const; iter_type get_weekday(iter_type s, iter_type end, ios_base& f, ios_base::iostate& err, tm* t) const; iter_type get_monthname(iter_type s, iter_type end, ios_base& f, ios_base::iostate& err, tm* t) const; iter_type get_year(iter_type s, iter_type end, ios_base& f, ios_base::iostate& err, tm* t) const; iter_type get(iter_type s, iter_type end, ios_base& f, ios_base::iostate& err, tm* t, char format, char modifier = 0) const; iter_type get(iter_type s, iter_type end, ios_base& f, ios_base::iostate& err, tm* t, const char_type* fmt, const char_type* fmtend) const; static locale::id id; protected: ~time_get(); virtual dateorder do_date_order() const; virtual iter_type do_get_time(iter_type s, iter_type end, ios_base&, ios_base::iostate& err, tm* t) const; virtual iter_type do_get_date(iter_type s, iter_type end, ios_base&, ios_base::iostate& err, tm* t) const; virtual iter_type do_get_weekday(iter_type s, iter_type end, ios_base&, ios_base::iostate& err, tm* t) const; virtual iter_type do_get_monthname(iter_type s, iter_type end, ios_base&, ios_base::iostate& err, tm* t) const; virtual iter_type do_get_year(iter_type s, iter_type end, ios_base&, ios_base::iostate& err, tm* t) const; virtual iter_type do_get(iter_type s, iter_type end, ios_base& f, ios_base::iostate& err, tm* t, char format, char modifier) const; };
클래스 std::time_get_byname
template <class CharT, class InputIter = istreambuf_iterator<CharT>> class time_get_byname : public time_get<CharT, InputIter> { public: typedef time_base::dateorder dateorder; typedef InputIter iter_type; explicit time_get_byname(const char*, size_t refs = 0); explicit time_get_byname(const string&, size_t refs = 0); protected: ~time_get_byname(); };
클래스 std::time_put
template <class CharT, class OutputIter = ostreambuf_iterator<CharT>> class time_put : public locale::facet { public: typedef CharT char_type; typedef OutputIter iter_type; explicit time_put(size_t refs = 0); // 다음은 다른 멤버 함수들을 사용하여 구현됩니다. iter_type put(iter_type s, ios_base& f, char_type fill, const tm* tmb, const CharT* pattern, const CharT* pat_end) const; iter_type put(iter_type s, ios_base& f, char_type fill, const tm* tmb, char format, char modifier = 0) const; static locale::id id; protected: ~time_put(); virtual iter_type do_put(iter_type s, ios_base&, char_type, const tm* t, char format, char modifier) const; };
클래스 std::time_put_byname
template <class CharT, class OutputIter = ostreambuf_iterator<CharT>> class time_put_byname : public time_put<CharT, OutputIter> { public: typedef CharT char_type; typedef OutputIter iter_type; explicit time_put_byname(const char*, size_t refs = 0); explicit time_put_byname(const string&, size_t refs = 0); protected: ~time_put_byname(); };
클래스 std::money_get
template <class CharT, class InputIter = istreambuf_iterator<CharT>> class money_get : public locale::facet { public: typedef CharT char_type; typedef InputIter iter_type; typedef basic_string<CharT> string_type; explicit money_get(size_t refs = 0); iter_type get(iter_type s, iter_type end, bool intl, ios_base& f, ios_base::iostate& err, long double& units) const; iter_type get(iter_type s, iter_type end, bool intl, ios_base& f, ios_base::iostate& err, string_type& digits) const; static locale::id id; protected: ~money_get(); virtual iter_type do_get(iter_type, iter_type, bool, ios_base&, ios_base::iostate& err, long double& units) const; virtual iter_type do_get(iter_type, iter_type, bool, ios_base&, ios_base::iostate& err, string_type& digits) const; };
클래스 std::money_put
template <class CharT, class OutputIter = ostreambuf_iterator<CharT>> class money_put : public locale::facet { public: typedef CharT char_type; typedef OutputIter iter_type; typedef basic_string<CharT> string_type; explicit money_put(size_t refs = 0); iter_type put(iter_type s, bool intl, ios_base& f, char_type fill, long double units) const; iter_type put(iter_type s, bool intl, ios_base& f, char_type fill, const string_type& digits) const; static locale::id id; protected: ~money_put(); virtual iter_type do_put(iter_type, bool, ios_base&, char_type fill, long double units) const; virtual iter_type do_put(iter_type, bool, ios_base&, char_type fill, const string_type& digits) const; };
클래스 std::money_base
class money_base { public: enum part { none, space, symbol, sign, value }; struct pattern { char field[4]; }; };
클래스 std::moneypunct
template <class CharT, bool International = false> class moneypunct : public locale::facet, public money_base { public: typedef CharT char_type; typedef basic_string<CharT> string_type; explicit moneypunct(size_t refs = 0); CharT decimal_point() const; CharT thousands_sep() const; string grouping() const; string_type curr_symbol() const; string_type positive_sign() const; string_type negative_sign() const; int frac_digits() const; pattern pos_format() const; pattern neg_format() const; static locale::id id; static const bool intl = International; protected: ~moneypunct(); virtual CharT do_decimal_point() const; virtual CharT do_thousands_sep() const; virtual string do_grouping() const; virtual string_type do_curr_symbol() const; virtual string_type do_positive_sign() const; virtual string_type do_negative_sign() const; virtual int do_frac_digits() const; virtual pattern do_pos_format() const; virtual pattern do_neg_format() const; };
클래스 std::moneypunct_byname
template <class CharT, bool Intl = false> class moneypunct_byname : public moneypunct<CharT, Intl> { public: typedef money_base::pattern pattern; typedef basic_string<CharT> string_type; explicit moneypunct_byname(const char*, size_t refs = 0); explicit moneypunct_byname(const string&, size_t refs = 0); protected: ~moneypunct_byname(); };
클래스 std::messages_base
class messages_base { public: typedef /* 지정되지 않은 부호 있는 정수 타입 */ catalog; };
클래스 std::messages
template <class CharT> class messages : public locale::facet, public messages_base { public: typedef CharT char_type; typedef basic_string<CharT> string_type; explicit messages(size_t refs = 0); catalog open(const basic_string<char>& fn, const locale&) const; string_type get(catalog c, int set, int msgid, const string_type& dfault) const; void close(catalog c) const; static locale::id id; protected: ~messages(); virtual catalog do_open(const basic_string<char>&, const locale&) const; virtual string_type do_get(catalog, int set, int msgid, const string_type& dfault) const; virtual void do_close(catalog) const; };
클래스 std::messages_byname
template <class CharT> class messages_byname : public messages<CharT> { public: typedef messages_base::catalog catalog; typedef basic_string<CharT> string_type; explicit messages_byname(const char*, size_t refs = 0); explicit messages_byname(const string&, size_t refs = 0); protected: ~messages_byname(); };
클래스 std::wstring_convert
template<class Codecvt, class Elem = wchar_t, class Wide_alloc = std::allocator<Elem>, class Byte_alloc = std::allocator<char>> class wstring_convert { public: typedef std::basic_string<char, char_traits<char>, Byte_alloc> byte_string; typedef std::basic_string<Elem, char_traits<Elem>, Wide_alloc> wide_string; typedef typename Codecvt::state_type state_type; typedef typename wide_string::traits_type::int_type int_type; explicit wstring_convert(Codecvt* pcvt = new Codecvt); wstring_convert(Codecvt* pcvt, state_type state); explicit wstring_convert(const byte_string& byte_err, const wide_string& wide_err = wide_string()); ~wstring_convert(); wstring_convert(const wstring_convert&) = delete; wstring_convert& operator=(const wstring_convert&) = delete; wide_string from_bytes(char byte); wide_string from_bytes(const char* ptr); wide_string from_bytes(const byte_string& str); wide_string from_bytes(const char* first, const char* last); byte_string to_bytes(Elem wchar); byte_string to_bytes(const Elem* wptr); byte_string to_bytes(const wide_string& wstr); byte_string to_bytes(const Elem* first, const Elem* last); size_t converted() const noexcept; state_type state() const; private: byte_string byte_err_string; // 설명용 전용 wide_string wide_err_string; // 설명용 전용 Codecvt* cvtptr; // 설명용 전용 state_type cvtstate; // 설명용 전용 size_t cvtcount; // 설명용 전용 };
클래스 std::wbuffer_convert
template<class Codecvt, class Elem = wchar_t, class Tr = std::char_traits<Elem>> class wbuffer_convert : public std::basic_streambuf<Elem, Tr> { public: typedef typename Codecvt::state_type state_type; explicit wbuffer_convert(std::streambuf* bytebuf = 0, Codecvt* pcvt = new Codecvt, state_type state = state_type()); ~wbuffer_convert(); wbuffer_convert(const wbuffer_convert&) = delete; wbuffer_convert& operator=(const wbuffer_convert&) = delete; std::streambuf* rdbuf() const; std::streambuf* rdbuf(std::streambuf* bytebuf); state_type state() const; private: std::streambuf* bufptr; // 설명용 Codecvt* cvtptr; // 설명용 state_type cvtstate; // 설명용 };
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 71 | C++98 | time_get::do_get_monthname 의 매개변수 end 가 개요에서 누락됨 | 추가됨 |
| LWG 75 | C++98 |
codecvt
와
codecvt_byname
의 멤버
length
와
do_length
의 매개변수
state
타입이 개요에서
const
stateT
&
로 되어 있음
|
stateT & 로 수정됨 |
| LWG 124 | C++98 |
codecvt_byname
의 멤버
do_scan_is
와
do_scan_not
의 반환 타입이 개요에서
const
char
*
로 되어 있음
|
const charT * 로 수정됨 |
| LWG 228 | C++98 |
XXX_byname
패싯의 모든 가상 멤버 함수가 개요에 나열됨
|
소멸자만 나열함
(다른 모든 가상 멤버 함수 제거됨) |
| LWG 268 | C++98 | std::locale 의 기본 생성자와 복사 생성자 선언 뒤의 세미콜론이 개요에서 누락됨 | 추가됨 |
| LWG 1298 | C++98 |
개요에 명시적 특수화
ctype_byname < char > 가 있음 |
제거됨 |