0

我有一个名为 StringList 的类的构造函数和析构函数。我创建了添加、删除和清除链表中字符串的函数。我希望这个程序即使在程序结束时也能保留它添加的字符串。我可以做到这一点的一种方法是让我的构造函数从文件中读取,而我的析构函数将字符串保存到同一个文件中。我是编程新手,我一直在寻找如何为链表执行此操作,但到目前为止我遇到了死胡同。我从中读取的文件称为 Read.txt,当调用析构函数时,所有字符串都保存到该文件中。Read.txt 文件包含如下列表:

HELLO
MOM
BART
CART
PETS 

这是代码:

StringList::StringList()
{
    ifstream infile;
  // i know how to open the file i just dont really have a single clue on how to set each string into the linked list


}

StringList::~StringList()
{
    StringListNode *next;
    for (StringListNode *sp = pTop; sp != 0; sp = next)
    {
        next = sp->pNext;
        delete sp;
    }
}

任何建议或示例将不胜感激。如果您需要更多信息或我写的更多代码,请尽快告诉我

4

2 回答 2

3

这是我的建议。希望能帮到你。

StringListNode *cur = pTop;  // I guess pTop is the head of your list
for each string s  // read
{
    cur = new StringListNode(s);  // call the constructor of StringListNode
    cur = cur->pNext;
}
于 2013-07-16T04:52:49.700 回答
0

这是一些代码来完成你想要的。对于阅读,您应该在输入文件流上进行一个 while 循环,直到无法读取更多字符串。使用您已经编写的 add 函数添加每个字符串。然后为了销毁,您应该打开一个文件流并相应地保存列表的每个元素。


StringList::StringList() {
    ifstream ifs("MyFilename.txt");
    string s;
    while(ifs >> s)
        Add(s);
}

StringList::~StringList() {
    ofstream ofs("MyFilename.txt");
    StringListNode *next;
    for (StringListNode *sp = pTop; sp != 0; sp = next)
    {
        ofs << sp->element << endl;
        next = sp->pNext;
        delete sp;
    }
}
于 2013-07-16T04:42:27.587 回答