0

ファイルを開いてその内容を読み取る単純なプログラム。最後に、実際に情報を取得したかどうかを確認するテストを行います。実行するたびに、ファイルを開くことができないと表示されます。以下にSaleSlipsの内容を掲載します。ファイルが開かないのはなぜですか?また、実行ごとにファイルを削除しようとしています。

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;

struct SaleSlip{
    char name[20];
    int prodID;
    double value;
};

void main(){

    fstream slips;
    SaleSlip sales[17];
    slips.open("SaleSlips.txt", ios::in);
    if(slips.eof()){
        cout << "Cannot open file - SaleSlips.txt"<< endl;
        system("pause");
        exit(2);
    }
    int i = 0;
    while(!slips.eof()){
        slips.getline(sales[i].name, ' ');
        slips >> sales[i].prodID;
        slips.ignore(5, ' ');
        slips >> sales[i].value;
        slips.ignore(80, ' ');
        i++;
    }
    cout << sales[1].value;
    slips.close();
    system("pause");
}

Eric   1 200000.00
Sookie 2    200.00
Sookie 4    200.50
4

2 に答える 2

0

2 つの問題があります。

出力(書き込み)用にファイルを開いています

slips.open("SaleSlips.txt", ios::out);

ios::in入力(読み取り)の代わりに使用

slips.open("SaleSlips.txt", ios::in);

次に、すぐに をテストしていますが!eof()、これは間違ったロジックです。

if(!slips.eof())

入力用にファイルを開くときは、したくありません。です。入力用にファイルを最初に開くときは、ファイルの先頭にいる必要があります。にいるのは悪いことです。false の場合ではなく、true の場合、コードはエラーになるはずです。eof()eof()end of fileeof()eof()

if(slips.eof()) {
  // It's an error if we're starting at eof()
}
于 2013-07-26T01:43:56.807 に答える