Previous: , Up: Formatted Input   [Index]


11.3 C++書式指定入力

ここで述べる関数は libgmpxx (see Headers and Libraries)で提供されており,C++サポートを有効にしている時のみビルドされるものです(see Build Options)。関数プロトタイプは<gmp.h>で定義されています。

Function: istream& operator>> (istream& stream, mpz_t rop)

iosの書式指定文字列に則ってstreamを読み取ってropに格納します。

Function: istream& operator>> (istream& stream, mpq_t rop)

123’のような整数や‘5/9’のような分数を読み取ります。‘/’の前後にホワイトスペースが入ると正常に読み取れません。分数が標準形でない場合は,mpq_canonicalize関数を使って変換しておく必要があります(see Rational Number Functions)。

整数の読み取りの際には,ios::dec, ios::octios::hexという指定がなくとも,‘0’や‘0x’のように基数指定があれば読み取りできます。分数の場合は分子と分母の基数指定は別個に可能で,‘0x10/11’ は16/11,‘0x10/0x11’ は 16/17となります。

Function: istream& operator>> (istream& stream, mpf_t rop)

iosの書式指定に則り,streamを読み取ってropに格納します。

16進浮動小数点数や8進浮動小数点数のサポートはありません。将来は分かりませんが,今のところは標準浮動小数点数を読み取るoperator>>の機能だけサポートするのがベストと考えています。

istreamロケールで指定された桁まとめ機能は現状サポートしていません。そのうちサポートされるかもしれません。


これらのオペレータは,C++の普通のやり方でGMPデータ型の読み取りができます。例えば下記のように使います。

mpz_t  z;
...
cin >> z;

istream入力(と ostream 出力, see C++ Formatted Output)はGMPデータ型に対してのみオーバーロードされているので,mpz_t+を使った場合,結果は予測不能になります。オーバーロードされたクラスについてはC++ Class Interfaceを参照して下さい。