【问题标题】:Outfile & Iterator输出文件和迭代器
【发布时间】:2021-06-29 20:36:02
【问题描述】:

我很头疼,需要一个比我更聪明的人来告诉我我哪里错了/发生了什么。

我要做的就是打开一个文件,读取数字,将数字加一,用我的新数字截断文件,然后完成。目的是即使在我的(其他较大的)程序关闭后我也可以保留内存。每次我运行该函数时,它都会做一些奇怪的事情

#include <iostream>
#include <fstream>
using namespace std;
int getcount(){
   int number;
   ifstream indata;
   ofstream otdata;
   indata.open("count.txt");
   indata>>number;
   number++;
   otdata.open("count.txt", ios::trunc);
   otdata.close();
   return number;
}
int main()
{
   int i;
   i=getcount();
   cout<<i<<endl;
}

我当前的输出是这样的

32575 32655 65536 65536 65536 32622

有没有更好的方法来做到这一点?我应该去哪里看?我错字了吗?我以前做过这样的事情,并且阅读了文档,我的大学书籍等,找不到任何揭示的东西。提前谢谢你。

【问题讨论】:

  • 你永远不会写入 otdata
  • 我知道这是愚蠢的 fml,漫长的一天。谢谢垫
  • @EuclideanDreams 一个小提示:不要使用两个不同的流同时打开文件进行读写。并非所有 OS:es 都会接受这一点。默认情况下,Windows 将无法打开第二个流。

标签: c++ iterator fstream ifstream ofstream


【解决方案1】:

count.txt 存在吗?如果是这样,看起来你在打开它后没有存储数字(没有写回 otdata.open 和 otdata.close 之间的number)。另外,你应该在读完indata后关闭它。

【讨论】:

  • 是的,Mat 告诉过我(不写数据),我刚刚结束了漫长的一天,哈哈,我拿了 indata.close();尝试早点调试,但感谢您提醒我。十分感谢你的帮助。我只是需要睡觉哈哈。
猜你喜欢
  • 1970-01-01
  • 2012-12-13
  • 1970-01-01
  • 1970-01-01
  • 2022-11-14
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多