如何从二叉树中写入txt文件?

时间:2014-04-30 00:38:38

标签: c++ object output binary-tree

我正在尝试将二进制树中的信息写入txt文件。它所做的只是删除txt文件中的记录,而不是写任何内容。

这是我到目前为止所做的,但老实说我不知道​​。二叉树包含类客户的对象,以防它很重要。 p也是树的根。

template <class elemType>
void bSearchTreeType<elemType>::writeFileTree(binaryTreeNode<elemType> *p) const
{
    //Root=NULL;                       
    ofstream fin;
    fin.open("Customers.txt");

    if (p != NULL)
    {
        writeFileTree(p->llink);
        //cout << p->info << " ";
        fin << p->info;
        writeFileTree(p->rlink);
    }

    fin.close();
}

这是我重载的操作符。

ostream& operator >> (ostream& os, const Customer &cust)
{
    //print();
    os << cust.getCustNum() << endl << cust.getName() << endl;
    Address address = cust.getAddress();
    os << address.getStreet() << endl << address.getCity() << endl << address.getState() << endl << address.getZip() << endl;
    //address.print();
    return os;
}

1 个答案:

答案 0 :(得分:2)

每个递归调用都会打开(并且可能无法执行)带有新文件对象的相同文件。那不会起作用。您需要打开所有这些 之外的文件并将其作为参考参数传递

template <class elemType>
void bSearchTreeType<elemType>::writeFileTree(std::ostream& os, binaryTreeNode<elemType> *p) const
{
    if (p != NULL)
    {
        writeFileTree(os, p->llink);
        os << p->info << '\n';
        writeFileTree(os, p->rlink);
    }
}

打开来电者并关闭该文件。并且您的节点指针应该(可能)是const参数,顺便说一句。