私はテキストファイルを読み込んだ後、テキストファイルの各行を取り出して文字列ベクトルに格納するプログラムを作成しようとしています。私はテキストファイルを開くことができると思うが、私はそのポイントが実行されていない後にテキストファイルを開いた後に気づいた。たとえば、存在しないファイルの名前を入力するときに出力するmain関数の最後に、cout文があります。しかし、ファイル名を入力すると、最後のcout文から何も出力されません。これはなぜ誰でも知っていますか?ありがとう!テキストファイルを開いた後に私のcoutステートメントが印刷されないのはなぜですか?
int main()
{
vector<string>line;
string fileName = "test.txt";
ifstream myFile(fileName.c_str());
int i = 0;
int count = 0;
vector<string>lines;
cout << "test" << endl;
if (myFile.is_open())
{
cout << "test2" << endl;
while (!myFile.eof())
{
getline(myFile, lines[i],'\n');
i++;
}
myFile.close();
}
if (!myFile.is_open())
{
cout<< "File not open"<< endl;
}
myFile.close();
cout << "Test3" <<endl;
return 0;
}
'lines'は空のベクトルです。 'lines [i]'は 'i'の値に対して無効です。あなたのプログラムは単にクラッシュします。 –
[なぜ 'while(!myFile.eof())'が間違っているのですか?(http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong) – Barmar
あなた'lines [i]'を使ってベクトルの境界から書き出します –