试图打开.txt文件时程序崩溃



当我试图运行程序时,它一开始就崩溃了。问题是我的输入来自文件,我可以很好地写入文件。有人能解释一下为什么这个代码不起作用吗??

StringList::StringList()
{
  pTop=NULL;
  pBottom=NULL;
  ifstream in;
  in.open("read.txt");
  StringListNode * pCurrent;
  pCurrent = new StringListNode;
  pCurrent = pTop;
  while(!in.eof())  //reads it till the end of file
  {
    in >> pCurrent->data;
    pCurrent = pCurrent->pNext;
  }
  in.close();
}

该文件的输出工作正常。我想我会把它包括在内。

StringList::~StringList()
{
  ofstream out;
  out.open("read.txt");
  StringListNode * pCurrent;
  pCurrent = new StringListNode;
  pCurrent = pTop;
  while(pCurrent != 0)  
  {
    out << pCurrent->data << endl;
    pCurrent = pCurrent->pNext;
  }
  out.close();
 }

pCurrent = pTop;为什么要在这里分配?这使得pCurrent为空指针。请删除或修复。

我对你的代码感到困惑:

pCurrent = new StringListNode; // Allocate new memory and point at it
pCurrent = pTop; // Make pCurrent point at same thing as pTop

您分配给pCurrent两次。pTop看起来像一个数据成员,也许您是指构造函数:

pCurrent = new StringListNode; // Allocate new memory and point at it
pCurrent->pNext = nullptr; // Assign null to next pointer
pTop = pCurrent; // Make pTop point at new memory

并且在析构函数中移除CCD_ 5,因为它什么都不做。

输出时,您检查pCurrent != 0,但读取时不检查null。pCurrent可能是空指针。

另外,请阅读为什么循环条件中的iostream::eof被认为是错误的?。你的循环应该是:

while(pCurrent && (in >> pCurrent->data)) 
{
   pCurrent = pCurrent->pNext;
}

相关内容

  • 没有找到相关文章

最新更新