gpt4 book ai didi

c++ - 尝试打开 .txt 文件时程序崩溃

转载 作者:行者123 更新时间:2023-11-28 07:31:05 25 4
gpt4 key购买 nike

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

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

并在析构函数中删除 pCurrent = new StringListNode; 因为它什么都不做。

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

另外,请阅读 Why is iostream::eof inside a loop condition considered wrong? .你的循环应该是:

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

关于c++ - 尝试打开 .txt 文件时程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17690533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com