我正在尝试将二进制树中的信息写入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;
}
答案 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
参数,顺便说一句。