c++ - 从 cin 中选择下一行

标签 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;
}

最佳答案

编写您的代码,使您领先一行。然后你的 if 语句变成:

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

或者,如果您能负担得起内存(很可能您能负担得起),则将整个文件放入 vector<string> 中。然后在那个上递归。

关于c++ - 从 cin 中选择下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20321247/

相关文章:

c++ - 无法调试到源代码

c++ - 在 3 元素映射 C++ 中添加新项目并使用时间键搜索

c++ - 有没有一种方法可以添加一些用户使用c++输入的行?

c++ - 递归地连接以 null 结尾的字符串

c++ - Segfault声明类型为vector <shared_ptr <int >>的变量

c++ - 通过 execvp : StrictHostKeyChecking=no: unknown option 运行 rsync

c++ - DLL 锁定 - Visual Studio 2010 C++

c# - 保护 API 客户端与 WCF 服务器通信的最简单方法是什么?

C++ 按值数字排序映射,键按字母顺序排序

c++ - 参数化构造函数不是拷贝