私は、フォルダから別の場所からファイルを読み込むプログラムを持っています。ファイルが正常に読み込まれると、ファイルのifstream変数を一時変数に割り当てます。以下のコードは例です:C++ - スローされた例外:読み取りアクセス違反。変数はnullptrでした
while (!CBAsales.eof())
{
string sFilePath = "Datafolder/CBA/";
sFilePath = sFilePath.append(sFileName);
// Read the csv file
infile.open(sFilePath);
if (!infile)
{
cout << sFileName << ": File not found!!!" << endl;
exit(1);
}
while (getline(infile, record, '\n'))
{
while (!infile.eof())
{
if (record.size() > 0)
{
//insert elements here
}
}
}
infile.close();
mapIAG.insert(pair<string, Vector<Stock>>(sFileName, V1));
}
CBAsales.clear();
CBAsales.seekg(0, ios::beg);
tempSales = &CBAsales;
}
これはファイルの読み取り値です。これでtempSales =&CBAsalesが表示されます。一時変数に代入されます。私はこれらの変数をグローバルに宣言し、以下に示すtempSalesへのポインタがあります。私は必要なすべてのレコードを表示していますのはここ
ifstream codeindex;
ifstream IAGsales;
ifstream CBAsales;
ifstream NABsales;
ifstream * tempSales;
ifstream infile;
は次のとおりです。
cout << "Enter date of transaction" << endl;
while (!tempSales->eof())
{
getline(*tempSales, record);
cout << record << endl;
}
これは私が取得エラーです:http://i.imgur.com/I9lv2zv.png
は、なぜそれが割り当てられていたにもかかわらず、ヌルを指していますか?ポインタを間違って使用していますか?
最初にお読みくださいhttp://stackoverflow.com/help/mcve –
@RichardHodges私は可能な限り最小限に抑えようとしました。スニペットは私の質問に関連しているので、これらのコード行を追加しました。 –
これは、同じ動作を示す完全な10行プログラムを提供することを意味し、再現することができます。 –