C++-引发异常:读取访问冲突.变量为nullptr
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;
}
这是我得到的错误:https://i.stack.imgur.com/GwSuc.png
为什么它指向null,即使它被分配了?我用错指针了吗?
您的循环毫无意义。如果我们只考虑相关变量,它相当于代码
while (!CBAsales.eof())
{
CBAsales.clear();
CBAsales.seekg(0, ios::beg);
tempSales = &CBAsales;
}
流CBAsales
在第一次测试中位于文件末尾,这意味着循环中的代码永远不会执行,或者循环永远不会执行。
如果循环从不执行,则语句tempSales = &CBAsales;
从不执行,并且tempSales
的初始值不变。
相关文章:
- 写入位置0x0000000C时发生访问冲突
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 链表中写入访问冲突的未知原因
- C++中的openCV Mat访问冲突
- C++尝试深度复制唯一指针时出现内存访问冲突
- C++ 中动态二维数组的访问冲突
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- 尝试通过共享指针使用变量时读取访问冲突
- 在链接的程序集文件中,我想从 c++ 调用代码访问变量.是否可以在不触发访问冲突的情况下执行此操作?
- 尝试使用成员函数访问动态分配的成员变量时读取访问冲突
- 写入结构变量时发生strcpy访问冲突
- C++-引发异常:读取访问冲突.变量为nullptr
- 当函数在fread()应用于局部结构变量后返回时发生访问冲突
- 声明变量时发生访问冲突
- 传递变量时的访问冲突
- 可以净化找出栈变量上的访问冲突
- 赋值变量时c++未处理异常访问冲突
- 使用 int 变量的 C++ 异常访问冲突
- 未处理的异常/访问冲突,只要我在变量上使用 OutputDebugStringW()
- 尝试返回同一类中的私有变量时C++ "Getter"方法抛出访问冲突