Search code examples
c++fstream

File object with fstream object is not created


I am trying to create a binary file as follows:

#include <iostream>
#include<fstream>

using namespace std;

int main()
{
    cout<<"Hello World";
    fstream fileObj = std::fstream("test_File.db", std::ios::in | std::ios::out | std::ios::binary);
    if(fileObj)
       std::cout<<"success";
    else
       std::cout<<"fail";
    return 0;
}

But fileObj is not created and always else part is executed. Please guide if I am missing anything.


Solution

  • A stream opened with in | out | binary does not create a file that does not exist. You should get into the habit of reading the documentation!

    Try in | out | app | binary (assuming you want existing contents to be kept; also get into the habit of clearly stating your goal/requirements).

    And there is no need to initialise from a temporary like that; just instantiate the object in the usual manner, e.g.

    std::fstream fileObj(
       "test_File.db",
       std::ios::in | std::ios::out | std::ios::app | std::ios::binary
    );