在C++中将破折号删除的文件中的数字插入 BST
Inserting numbers from file deliminted by dash into BST in C++
我正在尝试编写一个程序,该程序将从文件中读取数字并将它们插入到二叉搜索树中。 我尝试读取的文件很大(超过一百万个数字(,但第一个文件以这种方式开始:
298267282091408035-17044748745909945522138999443630343281-7437445665634475999134759620996365304-30967249084947458298112694712508035495502810273077177769044463844948009893353577 2884251867099313-5749770665631259681-3280801305990840625-9197941794449524441-147424278867187802328369201167366083797795701747773283129-4794953864841990716317462836568229334-...
其中数字由破折号分隔(并且没有换行符,因此理论上可以全部使用一行(。
老实说,我对如何做到这一点感到非常困惑。 这是我到目前为止所拥有的,但我知道这是错误的。 我只是不确定如何解决它。
cout << "File to be read: " << flush;
string fileName;
cin >> fileName;
fstream in;
in.open(fileName.c_str());
assert(in.is_open());
while(in.good()){
int num = in.get();
BST bst;
while(isalnum(num)){
try{
bst.insert(num);
} catch(Exception& e){
cerr << "error" << flush;
}
}
}
我还试图有一种方法来指示值是否重复并处理它引起的异常(因为重复值无法插入 BST(。
我知道我对这个问题没有提供太多帮助,但我只是不确定如何去做。 您能提供的任何帮助将不胜感激。 谢谢。
我认为您应该使用带有'-'
的getline
作为分隔符。
喜欢这个:
string temp;
std::getline(cin, temp, '-');
顺便说一句:看起来int
不足以达到给定的数字,其中一些真的很大。 即使对于long long int
类型来说也太大了。
也许最好将它们保留为字符串。
相关文章:
- 如何在C++中确定文本文件中的元素是字符还是数字
- 使用fstream对txt文件中的数字进行循环
- 如何在 C++ 中将文件中的逗号分隔数字读取到数组中?
- 为什么当我输入较大的数字时,我的程序会到达文件末尾?
- 如何从也包含C++字母的文本文件中提取某些数字?
- 如何将 UTF-8 文本从文件转换为某个可以迭代的容器,并检查每个符号是否为C++字母数字?
- 从.txt文件中读取浮点型数字并在公式中使用它们
- 在 txt 文件中显示前两个数字的程序
- 尝试将数字写入二进制文件时引发异常
- 为什么我的程序在读取/写入文件时会删除最重要的数字?
- C++:从文件中读取字符串和整数,并获得最大数字
- 一个C++程序,用于在输入位数时输出具有特定位数的 .txt 文件中的所有数字
- 如何读取具有数字间隔的文本文件?C++
- 如何知道文本文件中的输入是否是 C++ 中的有效数字
- 如何删除文件中的数字,通过 c++ fstream 的
- 在c++中读取文件时,它如何自动将字符放入字符数组,将数字放入整数变量
- 如何从txt文件c++中提取括号之间的数字
- 在获取从文件到矢量的每一行之后,数字将被更改或销毁
- 如何将数字输出到文件中,所有数字都具有相同的精度
- 如何检索文件数字签名信息