最終更新日時: 2022年10月31日 15時40分04秒 (JST)
yoh が更新

履歴 編集

function template
<ostream>

# std::endl

    namespace std {
      template<class CharT, class Traits>
      basic_ostream<CharT, Traits>& endl(basic_ostream<CharT, Traits>& os);
    }

## 概要

改行を出力し、バッファをフラッシュする。

C++のストリームには行バッファリングの機能がないため、行バッファリングの模倣として`endl`が多用される。

## 効果

1. `os.put(os.widen('\n'))`を呼び出す。
2. `os.flush()`を呼び出す。

## 戻り値

`os`

## 備考

本関数は、直接呼ぶのではなく、マニピュレータ関数へのポインタを引数に取る出力演算子（`operator<<`、挿入演算子、インサータとも呼ばれる）を通じて呼び出されるのが一般的である。

## 例

    #include <iostream>

    int main() {
      std::cout << "Kamaboko";
      std::endl(std::cout);                 // 直接呼出し（あまり一般的では無い）
      std::cout << "cpprefjp" << std::endl; // operator<< を通じた間接的な呼び出し（より一般的）
    }

### 出力

    Kamaboko
    cpprefjp

## 実装例

    namespace std {
      template<class CharT, class Traits>
      basic_ostream<CharT, Traits>& endl(basic_ostream<CharT, Traits>& os) {
        return os.put(os.widen('\n')).flush();
      }
    }

## バージョン

### 言語

- C++98

## 参照

- flush