Previous: Formatted Output Functions, Up: Formatted Output [Index]
本節に示した関数はlibgmpxx (see Headers and Libraries)が提供しているもので,C++サポート(see Build Options)を有効にしている時のみ使用可能です。型宣言は <gmp.h>
で行っています。
ios
の書式指定に従ってopをstreamに出力します。出力後はios::width
はゼロにリセットされます。この辺の挙動は標準の ostream operator<<
ルーチンと同じです。
16進でも8進でも10進でも,opは符号付きで表示されます。標準operator<<
ルーチンの動作とは異なり,2の補数表示は使いません。
ios
の書式指定に従ってopをstreamに出力します。出力後はios::width
はゼロにリセットされます。この辺の挙動は標準の ostream operator<<
ルーチンと同じです。
出力は‘5/9’のように分数表現となりますが,分母が1の時は‘123’のように単なる整数として表示します。
16進でも8進でも10進でも,opは符号付きで表示されます。 ios::showbase
がセットされている時には,分子と分母(の表示が必要な時には)にそれぞ適用されます
16進でも8進でも10進でも,opは符号付きで表示されます。 出力後はios::width
はゼロにリセットされます。この辺の挙動は標準の ostream operator<<
ルーチンと同じです。
小数点は標準の operator<<
演算子と同じように表示されます。streamの表示はstd::locale
に従って行われるのが近年では普通です。
double型に対する標準のoperator<<
とは異なり,16進でも8進でも出力できます。仮数部は16進か8進,指数は10進になります。16進の場合は仮数部と指数部の間の文字(デリミタ)が‘@’になります。これは mpf_out_str
関数と同じ仕様です。
ios::showbase
がサポートされており,仮数部の基数がセットされます。例えば16進は‘0x1.8’や ‘0x0.8’,8進は‘01.4’ or ‘00.4’のように出力されます。8進表記が少し奇妙ですが,10進表現と差異をつけるためにこのような表記を行っています。
以上のオペレーターは,GMPデータ型を通常のC++の入出力方法で表示できるようにするものです。下記のように使います。
mpz_t z; int n; ... cout << "iteration " << n << " value " << z << "\n";
当たり前のことですが,ostream
出力 (と istream
入力も, see C++ Formatted Input)は,GMPデータ型に対してこれらの演算子がオーバーロードされている時のみ有効で,例えば,+
をmpz_t
型に対して適用したりすると,その結果は予測不能なものになります。オーバーロードしてあるクラスについてはC++ Class Interfaceを参照して下さい。