c++ - 如何将连续输出存储为完整字符串?

标签 c++ string data-structures binary-tree

对于下面的代码,我试图将打印的节点存储在变量 s 中的完整表达式中的字符串中。

string ExprTree::prefixOrder(const ExprTree & t){
    string s;
    if (t.root != NULL){
     s.append(t.root->toString());
     prefixOrder(t.root->getLeftChild());
     prefixOrder(t.root->getRightChild());
    }
      std::cout << s << std::endl;
      return s;
}

对于算术表达式,即 5 + 5

我得到输出:

5
5
+

但是,我想将其存储在字符串 s 中,像 "+ 5 5" 这样的完整字符串,但附加将输出存储在不同的元素中,而不是单个元素中string 所以我想知道如何实现这个结果?我尝试使用 stringstream 并遇到了同样的问题。

最佳答案

您当前的实现会丢弃递归完成的任何字符串构建,从而使调用者实际上无所作为。它应该看起来像这样:

std::string ExprTree::prefixOrder(const ExprTree & t)
{
    std::string s;
    if (t.root != NULL)
    {
        s.append(t.root->toString());
        s.append(prefixOrder(t.root->getLeftChild()));
        s.append(prefixOrder(t.root->getRightChild()));
    }
    return s;
}

这样,给定根表达式树,您将获得前缀顺序作为最终输出。根调用者将看起来像这样:

ExprTree tree;

//
// build tree...
//

std::cout << prefixOrder(tree) << '\n';

关于c++ - 如何将连续输出存储为完整字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43831351/

相关文章:

algorithm - 使用哪种数据结构

java - 用于响应元素进入的数据结构?

java - 在不使用任何 String 函数的情况下读取字符数组中的字符串,甚至不使用 Java 中的 charAt

java - 我可以在 for 循环中使用字符串文字吗?

c# - 如何生成重复位模式(字符串)并导出到文本文件?

algorithm - 高效的嵌套优先级队列

c++ - 使用max函数和/或替代方法的正确方法

c++ - 为 QlineEdit 设置背景图像时如何在 QLineEdit 中设置文本颜色

c++ - 模板类作为模板类参数

c++ - solvePnPRansac 如何与双值一起使用?