2

ファイルを開いて、そこから行を読みたいと思います。ファイルには 1 行しかないので、実際にループについて心配する必要はありませんが、今後の参考のために、複数行を読み取る方法を知っておくとよいでしょう。

int main(int argc, const char* argv[]) {

    // argv[1] holds the file name from the command prompt

    int number = 0; // number must be positive!

    // create input file stream and open file
    ifstream ifs;
    ifs.open(argv[1]);

    if (ifs == NULL) {
        // Unable to open file
        exit(1);
    } else {
        // file opened
        // read file and get number
        ...?
        // done using file, close it
        ifs.close();
    }
}

どうすればいいですか?また、正常に開いたという点で、開いているファイルを正しく処理していますか?

ありがとう。

4

2 に答える 2

5

いくつかのこと:

  1. >>ストリーム抽出演算子で数値を読み取ることができます: ifs >> number.

  2. 標準ライブラリ関数getlineは、テキストの行全体が必要な場合、ファイルから行を読み取ります。

  3. if (ifs)ファイルが開いたかどうかを確認するには、 orと書くだけif (!ifs)です。を省略します== NULL

  4. 最後にファイルを明示的に閉じる必要はありません。ifsこれは、変数がスコープ外になると自動的に行われます。

改訂されたコード:

if (!ifs) {
    // Unable to open file.
} else if (ifs >> number) {
    // Read the number.
} else {
    // Failed to read number.
}
于 2010-07-25T02:05:18.147 に答える
1

ここで行っていることは、単純に次のとおりです。

ifs >> number;

ストリームから数値を抽出し、'number' に格納します。

ループ、コンテンツによって異なります。すべて数字の場合は、次のようになります。

int x = 0;
while (ifs >> numbers[x] && x < MAX_NUMBERS)
{
 ifs >> number[x];
 x++;
}

一連の数値を配列に格納するために機能します。これが機能するのは、抽出が成功した場合は抽出演算子の副作用が true になり、失敗した場合 (ファイルの終わりやディスク エラーなどにより) は false になるためです。

于 2010-07-25T02:09:05.907 に答える