Skip to content

Files

Latest commit

402cfd3 · Oct 31, 2022

History

History
66 lines (54 loc) · 1.72 KB

endl.md

File metadata and controls

66 lines (54 loc) · 1.72 KB

endl

  • ostream[meta header]
  • std[meta namespace]
  • function template[meta id-type]
namespace std {
  template<class CharT, class Traits>
  basic_ostream<CharT, Traits>& endl(basic_ostream<CharT, Traits>& os);
}
  • basic_ostream[link basic_ostream.md]

概要

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

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<< を通じた間接的な呼び出し(より一般的)
}
  • std::endl[color ff0000]

出力

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();
  }
}
  • basic_ostream[link basic_ostream.md]
  • put[link basic_ostream/put.md]
  • flush[link basic_ostream/flush.md]
  • widen[link ../ios/basic_ios/widen.md]

バージョン

言語

  • C++98

参照