我正在尝试将我的霍夫曼树序列化到一个文件中,但是遇到了问题的递归性质。我使用 cout 将它打印到控制台没有问题,但是当我尝试将它存储在字符串中或写入文件时出现分段错误。
string putData(Node *n, string &s) {
if (n->leaf()) {
s << "[" << n->value() << "]";
} else {
s << ".";
}
if (n->left())
putData(n->left(), s);
if (n->right())
putData(n->right(), s);
}
与 ofstream 对象相同的问题。实际上,在程序段错误之后,我检查了文件及其内容是否正确。但是为什么最后会出现段错误?如何阻止程序出现段错误?
string putData(Node *n, ofstream &s) {
s.open("huffout.txt", ios::app);
if (n->leaf()) {
s << "[" << n->value() << "]";
} else {
s << ".";
}
s.close()
if (n->left())
putData(n->left(), s);
if (n->right())
putData(n->right(), s);
}