C++1y string_view

N3069 string_view: a non-owning reference to a string, revision 3


Boost 1.53.0で入ったstring_refと同じく、所有権を持たない文字列クラスの提案。
このクラスは、char配列に対してsubstr()find()といったメンバ関数を、stringへの変換コストなしに呼び出すのに使用できます。

const char s[] = "Hello World";

// char配列の部分文字列を取得
string_view view = string_view(s).substr(6, 5);

for_each(view.begin(), view.end(), [](char c) {
    cout << c;
}); // 「World」が出力される

string_viewbasic_string_view型のtypedefとして定義されます。
basic_string_viewは基本的にbasic_stringと同じインタフェースを持っていますが、先頭/末尾文字列の判定/削除のためのremove_prefix()remove_suffix()start_with()ends_with()メンバ関数が追加されています。