最終更新日時: 2025年11月10日 22時21分07秒 (JST)
suomesta が更新

履歴 編集

function
<string_view>

# std::basic_string_view::subview(C++26)

    constexpr basic_string_view<charT, traits>
      subview(size_type pos = 0,
              size_type n = npos) const;

## 概要

部分文字列を取得する。

本関数は`substr`と全く同じ動作である。`std::string`とインターフェースを揃える目的で追加された。

## 戻り値

指定された位置`pos`から`n`文字からなる部分文字列を構築して返す。

`size() - pos`と`n`うち、小さい方を`rlen`とし、`basic_string_view(data() + pos, rlen)`を返す。

## 例外

`pos > size()`の場合、`std::out_of_range` 例外を送出する。

## 例

    #include <iostream>
    #include <string_view>

    int main()
    {
      std::string_view sv = "This is a pen";

      std::string_view ret1 = sv.subview(5);    // 5番目から最後までの文字列を取得
      std::string_view ret2 = sv.subview(5, 2); // 5番目から2文字の文字列を取得

      std::cout << "1 : [" << ret1 << ']' << std::endl;
      std::cout << "2 : [" << ret2 << ']' << std::endl;

      // subviewはデータを切り取るのではなく、参照位置と参照サイズを変更するだけなので、
      // 生ポインタを介せば全体の文字列を復元することはできる。
      const char* ret3 = ret1.data() - 5;
      std::cout << "3 : [" << ret3 << ']' << std::endl;
    }

### 出力

    1 : [is a pen]
    2 : [is]
    3 : [This is a pen]

## バージョン

### 言語

- C++26

### 処理系

- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??

## 参照

- P3044R2 sub-string_view from string

## 関連項目

- `substr`
- `basic_string::subview`