1

ファイルを開く必要がある C++ ドキュメントがあります。ファイルを参照するために相対パスを使用していません。現在、ハード ドライブの完全なファイル パスを使用していますが、後で現在のディレクトリのみを使用するように切り替えます。いずれにせよ、ファイル名に対して stat() を実行し、ファイルに関するすべての正しい情報を返すため、このファイルが正しく参照されており、開くことができるという事実を知っています。発生している基本的なプロセスは次のとおりです。

string fName = "C:\\Users\\[user]\\Downloads\\file.DAT";
ifstream inFile;
inFile.open(fName);

struct _stat buf;                        // I put these lines here to test that
int result = _stat(fName.c_str(), &buf); // the file is being referred-to right

inFile >> levelnumber;
if(inFile.fail())  // inFile.fail() keeps evaluating to TRUE
    ThrowError("Corrupt or inaccesible .DAT file."); // I wrote ThrowError

とにかく、ファイルが間違いなく正しく参照されているにもかかわらず、inFile.fail() は true と評価され続けます(これが _stat() の呼び出しでチェックされます)。

私は何を間違っていますか?:P

4

1 に答える 1

3

テストでは、ファイルを開くことができるかどうかはわかりません。テストでわかることは、ファイルを開くことができなかったか、levelnumber読み取ることができなかったことです。ファイルが開かれたかどうかをテストするには、 を呼び出した直後にファイルを確認しますopen()。ファイルが実際に読み取り可能であれば、次のように変換されtrueます。

std::ifstream inFile(fName);
if (!inFile) {
    std::cerr << "failed to open '" << fName << "' for reading\n";
}
于 2012-12-23T09:41:05.553 に答える