最終更新日時: 2026年02月20日 15時50分20秒 (JST)
Akira Takahashi が更新

履歴 編集

function template
<string>

# std::operator>>

    namespace std {
      template <class CharT, class Traits, class Allocator>
      std::basic_istream<CharT, Traits>&
        operator>>(std::basic_istream<CharT, Traits>& is,
                   basic_string<CharT, Traits, Allocator>& str);
    }

## 概要

文字列をストリームから入力する。空白文字が現れるまで、あるいは`setw`マニピュレータで指定された数までの文字列を入力する。

この関数は、書式化入力関数（`basic_istream`を参照）として作用する。

## 効果

1. `basic_istream<>::sentry`オブジェクトを構築する。`sentry`オブジェクトが失敗を示した場合、何もしない。
2. `str.erase()`を呼び出す。
3. 以下のいずれかを満たすまで、文字を入力して`str.append(1, c)`と等価な方法で文字列に追加する。なお、`c`は入力した文字を表す。
   - 最大文字数まで書き込んだ。最大文字数は次のいずれかである。
     - `is.width()`が`0`以上ならその値とする。
     - さもなくば、`str.max_size()`とする。
   - EOFに達した。
   - 空白文字に達した。空白文字の判定にはストリームに設定されているロケールが考慮される。
4. `is.width(0)`を呼び出す。

1文字も入力が行われなかった場合、ローカルエラー状態に`ios_base::failbit`を設定する。

## 戻り値

- 仮引数`is`。

## 例

    #include <iostream>
    #include <string>

    int main() {
      std::string a, b;
      if (std::cin >> a >> b) {
        std::cout << a << std::endl;
        std::cout << b << std::endl;
      }
    }

### 入力

    Apple Banana

### 出力

    Apple
    Banana

## 参照

- `getline`: このほかの`basic_string`に対する入力関数。
- このほかの`>>`演算子関数
  - `<istream>`ヘッダで定義されているもの
- P1264R2 Revising the wording of stream input operations
  - C++23でローカルエラー状態の概念が導入され、入力関数のエラー処理セマンティクスが明確化された