// マニピュレータの実行
// 3つとも関数へのポインタを引数に取る。
basic_ostream&
operator<<(basic_ostream& (*pf)(basic_ostream&)); // (1) C++03
basic_ostream<CharT, Traits>&
operator<<(basic_ios<CharT, Traits>& (*pf)(basic_ios<CharT, Traits>&)); // (2) C++03
basic_ostream<CharT, Traits>&
operator<<(ios_base& (*pf)(ios_base&)); // (3) C++03
// bool値・数値・ポインタの書式化出力
basic_ostream& operator<<(bool n); // (4) C++03
basic_ostream& operator<<(short n); // (5) C++03
basic_ostream& operator<<(unsigned short n); // (6) C++03
basic_ostream& operator<<(int n); // (7) C++03
basic_ostream& operator<<(unsigned int n); // (8) C++03
basic_ostream& operator<<(long n); // (9) C++03
basic_ostream& operator<<(unsigned long n); // (10) C++03
basic_ostream& operator<<(long long n); // (11) C++11
basic_ostream& operator<<(unsigned long long n); // (12) C++11
basic_ostream& operator<<(float f); // (13) C++03
basic_ostream& operator<<(double f); // (14) C++03
basic_ostream& operator<<(long double f); // (15) C++03
basic_ostream& operator<<(extended-floating-point-type f); // (16) C++23
basic_ostream& operator<<(const void* p); // (17) C++03
basic_ostream& operator<<(const volatile void* val); // (18) C++26
basic_ostream& operator<<(nullptr_t); // (19) C++17
// ストリームバッファの非書式化出力
basic_ostream& operator<<(basic_streambuf<CharT, Traits>* sb); // (20) C++03
概要
ストリームへの出力またはマニピュレータの実行を行う。
- (1)-(3) : マニピュレータを実行するオーバーロードそれ自体は、書式化出力関数・非書式化出力関数いずれにも該当しない
- (4)-(19) : 数値型(
boolも含む)とポインタに対するオーバーロードは、書式化出力関数である - (20) :
basic_streambufに対するオーバーロードは、非書式化出力関数である
効果
(1)-(3) : マニピュレータの実行
pf(*this)を呼び出す。
(4)-(18) : bool値・数値・ポインタの書式化出力
sentryオブジェクトを構築する。sentryオブジェクトが失敗を示した場合、何もしないnum_put::putを使用して入力のパース・数値への変換を行う。実引数を渡すに際し、一部の型では以下のように型変換を行う- (5)
short:flags()にhexまたはoctが設定されていればstatic_cast<long>(static_cast<unsigned short>(n))- それ以外では
static_cast<long>(n)
- (6)
unsigned short:static_cast<unsigned long>(n) - (7)
int:flags()にhexまたはoctが設定されていればstatic_cast<long>(static_cast<unsigned int>(n))- それ以外では
static_cast<long>(n)
- (8)
unsigned int:static_cast<unsigned long>(n) - (13)
float:static_cast<double>(f) - (16) 拡張浮動小数点数型:
- 変換順位が
double以下であれば、static_cast<double>(f) - そうでなく変換順位が
long double以下であれば、static_cast<long double>(f) - そうでなければ実装定義の意味論を持ち、この演算子は条件付きサポートとなる
- 変換順位が
- (18)
const volatile void*:return operator<<(const_cast<const void*>(val));
- (5)
num_put::putから得られたiostate値を実引数にしてsetstate関数を呼び出す
(19) : nullptr_tの出力
- C++17 : 実装定義の出力文字列
sを、return operator<<(s)として渡した場合と等価である。
(20) : ストリームバッファの非書式化出力
別のストリームバッファからの入力をストリームに出力する。
sentryオブジェクトを構築する。sentryオブジェクトが失敗を示した場合、何もしない。- 仮引数
sbがヌルポインタの場合、setstate(badbit)を呼び出して終了する。 - 以下のいずれかを満たすまで、
sbから文字を入力してthisへ出力する。- EOFに達した。
- 出力処理に失敗した(この場合、失敗したときの文字は入力側のストリームバッファに戻される)。
- 例外が発生した。
入力がなされなかった場合、setstate(failbit)を呼び出す。
戻り値
*this
備考
- このクラスにはメンバ関数版の
operator<<と非メンバ関数版のoperator<<があるが、ロケールに依存して出力が変わる型へのオーバーロードが、メンバ関数版として定義される設計となっている。 - (16) : 実装はCV修飾されていない全ての拡張浮動小数点数型に対するオーバーロードを提供する
例
#include <iostream>
int main() {
std::cout << 101 << std::endl;
}
出力例
101
バージョン
言語
- C++98
- C++11:
long long、unsigned long longを実引数として受け取るものが追加された
関連項目
- このほかの
<<演算子関数- 文字・文字列の書式化出力、および、右辺値ストリームに対する出力
std::sub_matchに関するものstd::error_codeに関するものstd::complexに関するものstd::bitsetに関するものstd::basic_stringに関するものstd::shared_ptrに関するものstd::shuffle_order_engineに関するものstd::gamma_distributionに関するものstd::geometric_distributionに関するものstd::extreme_value_distributionに関するものstd::fisher_f_distributionに関するものstd::mersenne_twister_engineに関するものstd::chi_squared_distributionに関するものstd::exponential_distributionに関するものstd::discrete_distributionに関するものstd::subtract_with_carry_engineに関するものstd::piecewise_constant_distributionに関するものstd::poisson_distributionに関するものstd::student_t_distributionに関するものstd::bernoulli_distributionに関するものstd::weibull_distributionに関するものstd::binomial_distributionに関するものstd::piecewise_linear_distributionに関するものstd::uniform_real_distributionに関するものstd::negative_binomial_distributionに関するものstd::discard_block_engineに関するものstd::normal_distributionに関するものstd::cauchy_distributionに関するものstd::lognormal_distributionに関するものstd::linear_congruential_engineに関するものstd::uniform_int_distributionに関するものstd::independent_bits_engineに関するもの
- 出力対象の型
参照
- N2114
long longGoes to the Library, Revision 1 - LWG Issue 2221. No formatted output operator for
nullptr - P1467R9 Extended floating-point types and standard names
- C++23で拡張浮動小数点数型の
ostream出力がサポートされた
- C++23で拡張浮動小数点数型の
- P1147R1 Printing
volatilePointers- C++26で
const volatile void*のオーバーロードが追加された
- C++26で