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

履歴 編集

function template
<string>

# std::getline

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

      template <class CharT, class Traits, class Allocator>
      std::basic_istream<CharT, Traits>&
        getline(std::basic_istream<CharT, Traits>&& is,
                basic_string<CharT, Traits, Allocator>& str);              // (2) C++11から

      template <class CharT, class Traits, class Allocator>
      std::basic_istream<CharT, Traits>&
        getline(std::basic_istream<CharT, Traits>& is,
                basic_string<CharT, Traits, Allocator>& str, CharT delim); // (3)

      template <class CharT, class Traits, class Allocator>
      std::basic_istream<CharT, Traits>&
        getline(std::basic_istream<CharT, Traits>&& is,
                basic_string<CharT, Traits, Allocator>& str, CharT delim); // (4) C++11から
    }

## 概要

ストリームから改行文字が現れるまで（1行すべて）あるいは仮引数`delim`で指定された文字までの文字列を入力する。

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

## 効果

仮引数`delim`がないオーバーロードでは、`std::getline(is, str, is.widen('\n'))`を呼び出す。

仮引数`delim`を持つものは以下の通り。

1. `basic_istream<>::sentry`オブジェクトを構築する。`sentry`オブジェクトが失敗を示した場合、何もしない。
2. `str.erase()`を呼び出す。
3. 以下のいずれかを満たすまで、文字を入力して`str.append(1, c)`と等価な方法で文字列に追加する。なお、`c`は入力した文字を表す。以下の条件判断はこの順で行う。
   1. EOFに達した。この場合、ローカルエラー状態に`ios_base::eofbit`を設定する。
   2. `Traits::eq(c, delim)`が真となった。
   3. 読み取った文字数が`str.max_size()`になるまで書き込んだ。この場合、ローカルエラー状態に`ios_base::failbit`を設定する。
4. 1文字も入力がなされなかったら、ローカルエラー状態に`ios_base::failbit`を設定する。
   - 空行の場合はこれに該当しないことに注意。なぜなら、改行文字1文字を入力しているためである。

この関数は`basic_istream<>::gcount`には影響を及ぼさない。

## 戻り値

- 仮引数`is`。

## 例

    #include <iostream>
    #include <string>

    int main() {
      std::string s;
      if (std::getline(std::cin, s)) {
        std::cout << s << std::endl;
      }
    }

### 入力

    Haru wa akebono.

### 出力

    Haru wa akebono.

## 関連項目

名前 | 説明
--- | ---
`std::basic_istream<>::getline` | 文字の配列へ入力を行うもの

## 参照

- P1264R2 Revising the wording of stream input operations
  - C++23でローカルエラー状態の概念が導入され、入力関数のエラー処理セマンティクスが明確化された