写入文件会复制最后一个条目
Writing to a file duplicates the last entry
我认为这是唯一需要的代码行。该程序从文本文件中读取信息,将信息分离并重写为两个不同的文件。它"正确地"读取所有值,并适当地将其分离。我遇到的问题是,在输出文件中,它复制了文件的最后一个条目。如果我使用getline()
作为输入,我知道如何解决这个问题,但我在文件中分别读取每个单词。
以下是我认为问题所在的代码:
while (in_file.peek() != EOF)
{
in_file >> rank >> boy_name >> boy_number >> boy_percent >> girl_name >> girl_number >> girl_percent;
boy_output << rank << " " << boy_name << " " << boy_percent << endl;
girl_output << rank << " " << girl_name << " " << girl_percent << endl;
}
我在类似的程序中使用了while (getline(in_file, line) && in_file.peek() != EOF)
,但正如我所说,我是逐行读取信息,而不是单词separation。
感谢
您可以尝试使用-
while(1)
{
if(in_file.peek() == EOF)
{
break;
}
in_file >> rank >> boy_name >> boy_number >> boy_percent >> girl_name >> girl_number >> girl_percent;
boy_output << rank << " " << boy_name << " " << boy_percent << endl;
girl_output << rank << " " << girl_name << " " << girl_percent << endl;
}
纠正输入循环的最简单方法是:
while (in_file >> rank >> boy_name >> boy_number >> boy_percent >> girl_name >> girl_number >> girl_percent)
{
boy_output << rank << " " << boy_name << " " << boy_percent << endl;
girl_output << rank << " " << girl_name << " " << girl_percent << endl;
}
只要流提取成功,此操作就会循环。这可以正确地处理EOF以及输入数据和变量类型之间的不匹配。
相关文章:
- lower_bound()返回最后一个元素
- 如果有一个模板构造函数只有一个泛型参数,为什么我必须有一个复制构造函数
- 获取向量C++中第一个值和最后一个值的和
- 获取用C/C++打印的最后一个字符串
- 使用运算符 [] 引用 std::vector 上最后一个元素时出现问题<>
- 为什么这个程序返回最后一个单词而不是最长的单词?
- 为什么我的最后一个 ELSE 条件无法正确执行
- Lower_bound不适用于具有 3 个元素的向量的最后一个元素
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- 仅显示链表的最后一个元素
- 测试迭代器是否位于列表中的最后一个
- push_back通过自行创建的对象获取最后一个元素的向量
- 使用 map.end() 访问 map 的最后一个元素
- 如何知道地图中的最后一个元素是否被删除?
- std::矢量保存 只推送最后一个元素
- 如何在新数组较小时创建新数组并将旧数组的最后一个元素复制到新数组中?
- 阵列操作,复制最后一个元素
- 写入文件会复制最后一个条目
- 获取字符串流中的最后一个字符,而不复制其整个缓冲区
- 增强灵气 - 使用基于流的解析复制最后一个字母