[英]C++ - Exception thrown: read access violation. Variable was nullptr
我有一個程序可以從文件夾的不同位置讀取文件。 成功讀取文件后,我將文件的ifstream變量分配給一個臨時變量。 下面的代碼是一個示例:
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
為什么即使分配了它也指向null? 我使用指針不正確嗎?
您的循環沒有任何意義。 如果僅考慮相關變量,則相當於代碼
while (!CBAsales.eof())
{
CBAsales.clear();
CBAsales.seekg(0, ios::beg);
tempSales = &CBAsales;
}
在第一次測試中,流CBAsales
位於文件末尾,這意味着循環中的代碼永遠不會執行,或者循環永遠執行。
如果循環從不執行語句tempSales = &CBAsales;
永遠不會執行,並且tempSales
初始值不變。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.