Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Fstream在std::Fstream::in | std::Fstream::out | std::Fstream::app模式下打开文件_C++_File Io - Fatal编程技术网

C++ Fstream在std::Fstream::in | std::Fstream::out | std::Fstream::app模式下打开文件

C++ Fstream在std::Fstream::in | std::Fstream::out | std::Fstream::app模式下打开文件,c++,file-io,C++,File Io,我需要能够创建一个不存在的文件。设计如下: 对于所有文件IO,我有一个线程,在封装文件的数据结构中,我有一个std::fstream file_句柄 我可以在模式-std::fstream::in | std::fstream::out | std::fstream::app下创建并打开此文件吗? 我需要这个,因为我必须使用这个句柄来执行文件末尾的读取和写入 但是,这不是创建文件。以下是我所拥有的: class file_io { std::string filename; std:

我需要能够创建一个不存在的文件。设计如下: 对于所有文件IO,我有一个线程,在封装文件的数据结构中,我有一个std::fstream file_句柄

我可以在模式-
std::fstream::in | std::fstream::out | std::fstream::app
下创建并打开此文件吗? 我需要这个,因为我必须使用这个句柄来执行文件末尾的读取和写入

但是,这不是创建文件。以下是我所拥有的:

class file_io
{
   std::string filename;
   std::fstream file_handle;
   file_io(std::string name)
   {
      filename = name;
   }
   void open_file()
   {
      if(!file_handle.is_open())
      {
          file_handle.open(filename.c_str(), std::fstream::in | std::fstream::out | std::fstream::app);
          if(!file_handle.is_open())
          {
              std::cout << "Could not open file " << filename ;
          }
          else
          {
              std::cout << "successfully opened file " << filename;
          }
      }
   }
   ~file_io()
   {
      if(file_handle.is_open)
      file_handle.close();
   }
};
类文件 { std::字符串文件名; std::fstream文件\u句柄; 文件io(标准::字符串名称) { filename=名称; } void open_文件() { 如果(!file\u handle.is\u open()) { file_handle.open(filename.c_str(),std::fstream::in | std::fstream::out | std::fstream::app); 如果(!file\u handle.is\u open()) {
std::cout因此,在std::stream open方法上读取文档。如果在打开中同时指定了'in'和'app',则打开将失败。请尝试将'in'关闭,看看会发生什么

如果模式同时设置了trunc和app,则打开操作将失败。如果设置了其中一个但未设置out,或者设置了app和in,则打开操作也将失败


< /P> < P>按C++ 98文档(假设您使用C++ 98),不能在和 APP中使用两种模式<代码>打开文件。


至于在一个文件上有多个句柄,这应该会有帮助:。

FWIW:我想指出,在一个类中,您没有指定public:或private:,所有内容都将默认为private。您甚至不应该编译调用open函数的代码。