[英]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.