Namespaces
Variants

Strings library

From cppreference.net

目次

キャラクター

C++標準ライブラリにおいて、 文字 とは、逐次的に扱われる場合にテキストを表現できるオブジェクトです。

この用語は character types のオブジェクトだけでなく、stringsライブラリおよび以下のライブラリで指定された定義を提供する型で表現可能な任意の値を意味します:

(C++11以降)

文字列ライブラリ および正規表現ライブラリ (C++11以降) において、文字は char-like types のみが可能です。すなわち、以下の要件を満たす非配列型のみが使用できます: PODType (C++20まで) TrivialType および StandardLayoutType (C++20以降) (C++26まで) TriviallyCopyable および StandardLayoutType (C++26以降)

任意のchar-like型 T に対して、 std:: is_trivially_default_constructible_v < T > true である。

(C++26以降)

したがって、文字は文字列ライブラリ および正規表現ライブラリ (C++11以降) において char-like objects とも呼ばれます 。

一部の標準ライブラリコンポーネントは 文字コンテナ型 を受け入れます。これらもまた、個々の文字を表現するために使用される型です。このような型は、 std::char_traits のテンプレート引数の一つと、 std::char_traits を使用するクラステンプレートのために使用されます。

ライブラリコンポーネント

C++文字列ライブラリには以下のコンポーネントが含まれます:

文字特性

多くの文字関連クラステンプレート(例: std::basic_string )は、その意味論を定義するために一連の関連型と関数を必要とします。これらの型と関数は、各テンプレートで使用されるテンプレートパラメータ Traits 内のメンバー typedef 名と関数の集合として提供されます。これらの意味論を完成させることが可能なクラスは CharTraits です。

文字列ライブラリは、クラステンプレート std::char_traits を提供します。これは、 std::basic_string および std::basic_string_view (C++17以降) のための型と関数を定義します。

以下の特殊化が定義されており、これらはすべて CharTraits 要件を満たします:

ヘッダーで定義 <string>
template <> class char_traits < char > ;
template <> class char_traits < wchar_t > ;
template <> class char_traits < char8_t > ;
(C++20以降)
template <> class char_traits < char16_t > ;
(C++11以降)
template <> class char_traits < char32_t > ;
(C++11以降)

ユーザー定義の文字コンテナ型を std::basic_string および std::basic_string_view (C++17以降) に対して使用する場合、対応する文字特性クラス( std::char_traits の特殊化でも可)を提供する必要もあります。

文字列クラス ( std::string など)

クラステンプレート std::basic_string は、文字シーケンスの操作と保存方法を一般化します。文字列の作成、操作、破棄はすべて、便利なクラスメソッドと関連関数のセットによって処理されます。

一般的に使用される型に対して、 std::basic_string のいくつかの特殊化が提供されています:

定義済みヘッダー <string>
定義
std::string std:: basic_string < char >
std::wstring std:: basic_string < wchar_t >
std::u8string (C++20以降) std:: basic_string < char8_t >
std::u16string (C++11以降) std:: basic_string < char16_t >
std::u32string (C++11以降) std:: basic_string < char32_t >

文字列ビュークラス ( std::string_view など) (C++17以降)

クラステンプレート std::basic_string_view は、 std::basic_string と類似したインターフェースを使用して、文字列または文字列の一部への読み取り専用アクセスを提供する軽量なオブジェクトです。

一般的に使用される型に対しては、 std::basic_string_view のいくつかの特殊化が提供されています:

定義済みヘッダー <string_view>
定義
std::string_view std:: basic_string_view < char >
std::wstring_view std:: basic_string_view < wchar_t >
std::u8string_view (C++20以降) std:: basic_string_view < char8_t >
std::u16string_view std:: basic_string_view < char16_t >
std::u32string_view std:: basic_string_view < char32_t >

関連ライブラリ

テキスト処理ライブラリ は、ローカライゼーション、文字列変換(例: std::toupper )、文字分類関数(例: std::isspace )、およびテキストエンコーディング認識( std::text_encoding )のサポートを提供します。

欠陥報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 1170 C++98 char-like types could be array types prohibited

関連項目

C ドキュメント for 文字列ライブラリ