【发布时间】:2019-10-16 20:50:39
【问题描述】:
我正在开发一个处理二叉搜索树的程序。我有一个简单的文本文件,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
$
5 4 3 5 7 13
$
11 6 7 2 12 6
第一行包含要插入树的整数,第三行是要搜索的整数,第五行是要删除的整数。第二行和第四行用于标记其他行的分隔。它们包含单个字符“$”。 我正在为如何忽略第二行和第四行而苦苦挣扎。我有三个 while 循环,用两个忽略语句分隔。经测试,似乎从未进入过第二个和第三个 while 循环。我将不胜感激 - 我的代码如下。
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
#include "main.h"
int main(int argc, char *argv[])
{
string filename = "";
ifstream inFile;
filename = argv[1];
inFile.open(filename.c_str());
BST b;
int num;
while(inFile >> num)
{
b.insert(num);
cout << num << endl; //output testing - the first line was successfully output so I think this part is fine
}
inFile.ignore(500, '$');
while(inFile >> num) //this while loop is never entered
{
b.search(num);
}
inFile.ignore(500, '\n');
while(inFile >> num) //this while loop is never entered
{
b.remove(num);
}
inFile.close();
}
【问题讨论】:
-
一次读取一行。对于带有表示数字的文本的行,从该行构造一个
std::ostringstream,并从中提取数值。
标签: c++ while-loop binary-search-tree ifstream