JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.3: C++ ユーザーズガイド     Oracle Solaris Studio 12.3 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

パート I C++ コンパイラ

1.  C++ コンパイラの紹介

2.  C++ コンパイラの使用方法

3.  C++ コンパイラオプションの使い方

パート II C++ プログラムの作成

4.  言語拡張

5.  プログラムの編成

6.  テンプレートの作成と使用

7.  テンプレートのコンパイル

8.  例外処理

9.  プログラムパフォーマンスの改善

10.  マルチスレッドプログラムの構築

パート III ライブラリ

11.  ライブラリの使用

12.  C++ 標準ライブラリの使用

13.  従来の iostream ライブラリの使用

13.1 定義済みの iostream

13.2 iostream 操作の基本構造

13.3 従来の iostream ライブラリの使用

13.3.1 iostream を使用した出力

13.3.1.1 ユーザー定義の挿入演算子

13.3.1.2 出力エラーの処理

13.3.1.3 出力のフラッシュ

13.3.1.4 バイナリ出力

13.3.2 iostream を使用した入力

13.3.3 ユーザー定義の抽出演算子

13.3.4 char* の抽出子

13.3.5 1 文字の読み込み

13.3.6 バイナリ入力

13.3.7 入力データの先読み

13.3.8 空白の抽出

13.3.9 入力エラーの処理

13.3.10 iostreamstdio の併用

13.4 iostream の作成

13.4.1 クラス fstream を使用したファイル操作

13.4.1.1 オープンモード

13.4.1.2 ファイルを指定しない fstream の宣言

13.4.1.3 ファイルのオープンとクローズ

13.4.1.4 ファイル記述子を使用したファイルのオープン

13.4.1.5 ファイル内の位置の再設定

13.5 iostream の代入

13.6 フォーマットの制御

13.7 マニピュレータ

13.7.1 引数なしのマニピュレータの使用法

13.7.2 引数付きのマニピュレータ

13.8 strstream: 配列用の iostream

13.9 stdiobuf: stdio ファイル用の iostream

13.10 streambuf ストリームの操作

13.10.1 streambuf ポインタ型

13.10.2 streambuf オブジェクトの使用

13.11 iostream に関するマニュアルページ

13.12 iostream の用語

14.  ライブラリの構築

パート IV 付録

A.  C++ コンパイラオプション

B.  プラグマ

用語集

索引

13.4 iostream の作成

定義済みの iostream 以外のストリームを読み込む、あるいは書き込む場合は、ユーザーが自分で iostream を生成する必要があります。これは一般には、iostream ライブラリで定義されている型のオブジェクトを生成することになります。ここでは、使用できるさまざまな型について説明します。

13.4.1 クラス fstream を使用したファイル操作

ファイル操作は標準入出力の操作に似ています。ifstreamofstrea mfstream の 3 つのクラスはそれぞれ、istreamostreamiostream の各クラスから派生しています。この 3 つのクラスは派生クラスなので、挿入演算と抽出演算、および、そのほかのメンバー関数を継承しており、ファイル使用のためのメンバーとコンストラクタも持っています。

fstream のいずれかを使用するときは、fstream.h をインクルードします。入力だけ行うときは ifstream、出力だけ行うときは ofstream、入出力を行うときは fstream を使用します。コンストラクタへの引数としてはファイル名を渡します。

thisFile というファイルから thatFile というファイルへのファイルコピーを行うときは、次のコーディング例のようになります。

ifstream fromFile("thisFile");
if     (!fromFile)
    error("unable to open ’thisFile’ for input");
ofstream toFile ("thatFile");
if     (!toFile)
    error("unable to open ’thatFile’ for output");
char c;
while (toFile && fromFile.get(c)) toFile.put(c);

このコードは次を実行します。

13.4.1.1 オープンモード

このモードは、列挙型 open_mode の各ビットの or で構築されます。これは、ios クラスの公開部であり、次の定義を持ちます。

enum open_mode {binary=0, in=1, out=2, ate=4, app=8, trunc=0x10,
     nocreate=0x20, noreplace=0x40};

注 - UNIX では binary フラグは必要ありませんが、これを必要とするシステムとの互換性を保つために提供されています。移植可能なコードにするためには、バイナリファイルをオープンするときに binary フラグを使用する必要があります。


入出力両用のファイルをオープンできます。たとえば次のコードでは、someName という入出力ファイルをオープンして、fstream 変数 inoutFile に結合します。

fstream inoutFile("someName", ios::in|ios::out);

13.4.1.2 ファイルを指定しない fstream の宣言

ファイルを指定せずに fstream の宣言だけを行い、のちにファイルをオープンすることもできます。次の例では出力用の ofstream toFile を作成します。

ofstream toFile;
toFile.open(argv[1], ios::out);

13.4.1.3 ファイルのオープンとクローズ

fstream をいったんクローズし、また別のファイルでオープンすることができます。たとえば、コマンド行で与えられるファイルリストを処理するには次のようにします。

ifstream infile;
for (char** f = &argv[1]; *f; ++f) {
   infile.open(*f, ios::in);
   ...;
   infile.close();
}

13.4.1.4 ファイル記述子を使用したファイルのオープン

標準出力の整数 1 などのようにファイル記述子がわかっている場合は、次のようにファイルをオープンできます。

ofstream outfile;
outfile.attach(1);

fstream コンストラクタの 1 つにファイル名を指定してファイルをオープンしたり、open 関数を使用してオープンしたファイルは、fstreamdelete によって破壊されるか、スコープ外に出る時点で自動的にクローズされます。attachfstream に結合したファイルは、自動的にはクローズされません。

13.4.1.5 ファイル内の位置の再設定

ファイル内の読み込み位置と書き込み位置を変更することができます。そのためには次のようなツールがあります。