iostream インタフェースには、マルチスレッド環境で使用しても安全で、かつ再入可能な公開関数がいくつか追加されています。各関数の追加引数として、ユーザー定義バッファーを指定します。次に関数の内容を示します。
表 4-2 再入可能な公開関数
関数 |
内容 |
---|---|
char *oct_r (char *buf, int buflen, long num, int width) |
数値を 8 進表示した ASCII 文字列へのポインタを返します。幅がゼロ以外の場合は、フォーマット用のフィールド幅とみなされます。戻り値がユーザー提供バッファーの先頭を指していることは保証されません。 |
char *hex_r (char *buf, int buflen, long num, int width) |
数値を 16 進表示した ASCII 文字列へのポインタを返します。幅がゼロ以外の場合は、フォーマット用のフィールド幅とみなされます。戻り値がユーザー提供バッファーの先頭を指していることは保証されません。 |
char *dec_r (char *buf, int buflen, long num, int width) |
数値を 10 進表示した ASCII 文字列へのポインタを返します。幅がゼロ以外の場合は、フォーマット用のフィールド幅とみなされます。戻り値がユーザー提供バッファーの先頭を指していることは保証されません。 |
char *chr_r (char *buf, int buflen, int chr, int width) |
文字列 chr が含まれた ASCII 文字列へのポインタを返します。幅がゼロ以外の場合は、文字列には width 個のスペースに続いて chr が含まれます。戻り値がユーザー提供バッファーの先頭を指していることは保証されません。 |
char *form_r (char *buf, int buflen, const char *form,...) |
フォーマット文字列 format に続く引数を sprintf でフォーマットした文字列へのポインタを返します。バッファーには、フォーマット済み文字列を入れるための十分な長さが必要です。 |
旧バージョンの libC ライブラリとの互換性を保つために提供されている iostream ライブラリの公開変換ルーチン (oct、hex、dec、chr、form) は、「MT-安全」ではありません。