从cin中选择下一行

时间:2013-12-02 05:06:25

标签: c++

如何检查下一行的长度而不从cin中提取它?

我有以下形式的输入数据:

A
-B
--*
--C
-D
--E
---*
---F
0

我有一个递归函数来构建树。

TreeNode* BuildTree() {
  string line;
  getline(cin, line);
  char id = line[line.size() - 1];
  if (id == '0') return NULL;
  TreeNode* n = (id == '*') ? NULL : new TreeNode(id, NULL, NULL);
  if (/* This line's size less than next line's size */) {
    n->left = BuildTree();
    n->right = BuildTree();
  }
  return n;
}

1 个答案:

答案 0 :(得分:3)

编写代码,以便提前一行。然后你的if语句变为:

if (/* this line's size is greater than the previous line's size */) {
   ....
}

或者,如果你可以负担得起内存(并且可能你可以),将整个文件啜饮到vector<string>然后递归那个