从.txt文件中计数整数
C++ - Count integers from .txt file
我想从.txt文件名为"示例。in",其中包含(例如):
1 2 3 4 5
3 6 7
5 8
8 9 10 11
1。并返回11,在这种情况下(整数重复计数为1 -唯一的数字计数)。此时,它只输出0(我认为在这个阶段打开文件有问题)。
2。只输出每行的第一个整数1、3、5、8。
int integer_count(){
int count = 0;
int i;
ifstream fin;
fin.open("Example.in"); //.txt file
while(fin >> i)
{
count++;
}
fin.close();
return count; // In this case it should print 14 instead of 11,
because I didn't count out 3, 5 and 8 (which duplicates - haven't figured
out how to make unique count that would close eye for duplicates and
just count unique integers.)
}
打开文件时,应始终检查打开过程是否成功。我相信file_name.good()
是一个完美的布尔函数。只需编写一个简单的if语句,看看它是否有效,就像这样:
if(fin.good()) std::cout << "File opened!";
else{ //do something when opening didn't work }
另外,我相信你还需要写"完整的文件名",在这种情况下(如果你的文件名恰好是"Example.in")将是"Example.in.txt"。
对于唯一整数问题,有两个解决方案:要么创建一个std::vector
,存储已经从文件中读取的整数,每次尝试读取另一个整数时,检查它是否已经被读取(这里最快的算法将是快速/堆/合并排序+二进制搜索,而不是每次迭代)。总是当添加新的整数时,将count
值增加1。
第二个解决方案是:只需将整数存储在vector中,并通过迭代和擦除来消除倍数。那么count
就等于your_vector.size()
。
"打印每一个以新行开头的整数"是一个不同的问题。我会从使用while(fin >> i)
切换到getline()
功能。这样,文件的每一行都是字符串,可以转换成整行。对于while()
循环,您不知道新行何时开始,因此不可能完成第二个任务(或者,在任务1之后,您可以再次打开文件并使用另一种算法,仅用于获取每行的第一个整数)
最后一件事:正如这里的许多人所说,强烈建议使用调试器。它节省了我思考问题的时间,只需一行一行地浏览代码。Codeblocks提供了一个非常好的调试器,所以我建议您简单地google一下Codeblocks调试器指南。甚至YouTube上也有一些相关的教程
- 如何反转整数参数包
- enum是C++中的宏变量还是整数变量
- 努力将整数转换为链表。不知道我在这里做错了什么
- 整数不会重复超过随机数
- 在C++中手动调整数组大小
- 检查输入是否不是整数或数字
- Arduino从Txt读取整数
- (C/C++)fscanf_s从txt文件以字符形式读取数组时缺少整数参数错误
- 在 c++ 中将整数写入.txt文件
- 从.txt文件中获取整数
- C++ - 使用 stringstream 对象从外部 txt 文件中的句子中读取字符串和整数
- 使用C++当我同时具有整数和字符数组时,如何将.txt文件中的数据作为链表的一部分访问
- 如何将.txt文件中的未知数字整数保存到数组中
- 如何将.txt文件中的特定整数存储在结构数组中
- 只从.txt文件的一行中输入整数
- c++从.txt文件读取整数到堆栈
- 如何为txt文件中的每个名称生成一个整数
- 从.txt文件中计数整数
- 试图从.txt文件中读取整数并将其存储在2D数组中
- 从同样包含字符串的.txt文件中读取整数和双精度