を失敗したので
#include <iostream>
#include <string>
#include <fstream>
#include "arrayFunctions.h"
using namespace std;
int main()
{
string fileName;
int size = 0;
ifstream inputFile;
do
{
cout << "Please enter file name: ";
getline(cin,fileName);
inputFile.open(fileName.c_str());
if (!inputFile)
{
cout << "The file \"" << fileName << "\" failed to open.\n"
<< "Check to see if the file exists and please try again"
<< endl << endl;
}
while (inputFile.good())
{
string stop = " ";
string num;
getline(inputFile, stop);
size++;
}
} while (!inputFile);
cout << size << endl << endl;
inputFile.close();
system("pause");
}
問題は、実際にファイルを開くことにあるようですステートメントは、おそらくあなたが行っていると思っていることをしていない - それは常にオブジェクトへの参照になるだろうし、nullになることはありません。
ifstreamを暗黙的にブール値に変換すると何が起こるかわかりません。
は
if (!inputFile.is_open())
にこの
if (!inputFile)
を変更してみてください私は、具体的
good()メソッドが何をするか、ストリームの参照にブラッシュアップしました。効果的には、何がうまくいかないのかを推測するには広すぎます。ハードディスクエラー、権限エラー、間違ったファイル名などが考えられます。
あなたは何が起こっているのかをより明確に把握できます。エラーメッセージは次のようなものを使用しています(C++リファレンスから修正):
if (!inputFile.good()) {
cout << "The file \"" << fileName << "\" failed to open.\n"
cout << "good()=" << inputFile.good();
cout << " eof()=" << inputFile.eof();
cout << " fail()=" << inputFile.fail();
cout << " bad()=" << inputFile.bad();
}
ファイルはどこにあるはずですか?たとえば、ユーザーがfoo.txtを入力した場合、foo.txtファイルはプロセスの作業ディレクトリが –
である必要があります。@ Jerry Jerehmiah明らかに、ファイルをソースコードフォルダにドラッグするのではなく、実際のソースコードフォルダに移動する必要がありました。マイクロソフトビジュアルスタジオで。私は答えとしてあなたのものを選択しましたが、それはうまくいかなかったというコメント –