ifstream --> ofstream C++

ifstream --> ofstream c++

本文关键字:ofstream C++ gt ifstream      更新时间:2023-10-16

我有一个函数可以获取ifstream变量,但在某些情况下我必须写入该文件。例如

main()
{
  ifstream dataFile("filename.txt");
  foo(dataFile);
}
void foo(ifstream &df)
{
  if(df.good()) {...}
  else {
     //here I need to write str into the "filename.txt"
     //but I don't know how to do it properly!
  }
}

正如我所能想象的,最简单的方法是从foo((中的df中获取文件名。。。但是怎么做呢?

想象一下:我不能使用fstream。出于某种原因我只有ifstream&不知道文件的名称。例如,我得到ifstream&来自某个封闭库函数。

使用fstream而不是ifstream:

fstream dataFile("filename.txt",ios::in | ios::out | ios::app);

有了这个,你就可以读写文件了。

当然,通过引用传递fstream对象,而不是通过值传递。fstream是不可复制的。

不幸的是,考虑到您只有一个ifstream而没有文件名的限制,没有可移植的方法可以写回该文件。

可能有不可移植的方法来解决此问题。例如,一些unix实现可能在filebuf对象上提供fd函数,您可以从ifstream中的rdbuf获得该函数。Windows可能提供也可能不提供类似的功能。

最后,我要指出的是,听起来你可能解决了错误的问题,你至少应该花点时间访问你的设计(以及为什么你需要写一个你不知道名字的文件(。