string[meta header]
std[meta namespace]
class template[meta id-type]
namespace std {
template <class charT > struct char_traits ;
template <> struct char_traits <char >;
template <> struct char_traits <char8_t >; // C++20から
template <> struct char_traits <char16_t >; // C++11から
template <> struct char_traits <char32_t >; // C++11から
template <> struct char_traits <wchar_t >;
}
char_traits
は、basic_string
文字列クラスのおける、各要素の特性を使用するためのクラスである。
このクラスと同じインタフェースのクラスを用意してbasic_string
クラスのテンプレート引数として指定することにより、ユーザー独自の処理に切り替えることが可能である。たとえば、大文字・小文字を区別しない比較のためのカスタマイズに利用できる。
テンプレートパラメータは以下を意味する:
charT
: basic_string
クラスが扱う文字型
名前
説明
対応バージョン
char_type
文字コンテナの実装で使用される文字型
int_type
文字に対応する値を表す数値型
off_type
文字の差を表す型
pos_type
位置を表す型
state_type
ストリームのマルチバイト文字の変換の状態を表す型
名前
説明
対応バージョン
char_type
char
int_type
int
off_type
streamoff
pos_type
streampos
state_type
mbstate_t
char8_tによる特殊化のメンバ型定義 (C++20)
名前
説明
対応バージョン
char_type
char8_t
C++20
int_type
unsigned int
C++20
off_type
streamoff
C++20
pos_type
u8streampos
C++20
state_type
mbstate_t
C++20
char16_tによる特殊化のメンバ型定義 (C++11)
名前
説明
対応バージョン
char_type
char16_t
C++11
int_type
uint_least16_t
C++11
off_type
streamoff
C++11
pos_type
u16streampos
C++11
state_type
mbstate_t
C++11
char32_tによる特殊化のメンバ型定義 (C++11)
名前
説明
対応バージョン
char_type
char32_t
C++11
int_type
uint_least32_t
C++11
off_type
streamoff
C++11
pos_type
u32streampos
C++11
state_type
mbstate_t
C++11
名前
説明
対応バージョン
char_type
wchar_t
int_type
wint_t
off_type
streamoff
pos_type
wstreampos
state_type
mbstate_t
#include < iostream>
#include < string>
int main ()
{
// std::stringと同じ
std::basic_string<char , std::char_traits<char >> a = " aaa" ;
std::basic_string<char , std::char_traits<char >> b = " bbb" ;
// char_traits::compare()で比較が行われる
if (a < b) {
std::cout << " then" << std::endl;
}
else {
std::cout << " else" << std::endl;
}
}
std::char_traits[color ff0000]
std::basic_string[link basic_string.md]