string_viewでのC++の利用法は?
string_viewは、C++17で導入された新しい文字列ビュー型で、文字列データに軽量な非所有参照専用の方法でアクセスする方法を提供します。これは、std::stringのように文字列データをコピーする必要がなく、文字列への読み取り専用参照とみなすことができます。
文字列ビューの使い方は次のようになります。
- ヘッダーファイル:#include
- 文字列ビューオブジェクトを作成する
- std::string_view sv;
std::string_view sv1 = “hello”;
std::string_view sv2 = sv1;
std::string_view sv3 = sv1.substr(0, 3); - string_viewの機能:
- size():string_view内の文字の数を返す。
- length():string_view内の文字の数を返します。size()と同じです。
- empty():文字列ビューが空であるかどうかを返す。
- data():string_view内文字データへのポインタを返します。
- 文字列の指定位置にある文字を返す。
- substr():文字列ビューのサブ文字列を返します。
- remove_prefix():string_view のプレフィックスを取り除きます。
- remove_suffix():文字列ビューの接尾辞を除去します。
- string_view の比較:
- Operator==:2つのstring_viewが等しいかどうかを比較します。
- オペレーター !=:2 つの string_view が等しくないかどうかを比較します。
- 辞書順で二つの文字列表現を比較する。
- 演算子<=:辞書式順で2つの文字列ビューを比較する。
- 辞書順で2つのstring_viewを比較します。
- 演算子 ‘>=’:辞書順で 2 つの string_view を比較します。
- string_viewの使用例:
- 関数引数でstring_viewを使うことで、不要なコピー操作を回避できます。
- 素早い検索や文字列の照合などの操作に利用される。
string_viewは文字列への参照であり、文字列データを持たないため、文字列データの有効期間がstring_viewの有効期間よりも等しいか長いことを確認する必要がある。 そうしないと、ぶら下がり参照の問題が発生します。