c++ - fstream and ofstream

后端 未结 2 600
耶瑟儿~
耶瑟儿~ 2021-01-11 16:30

What is the difference between:

fstream texfile;
textfile.open(\"Test.txt\");

and

ofstream textfile;
textfile.open(\"Test.t         


        
相关标签:
2条回答
  • 2021-01-11 17:22

    Take a look at their pages on cplusplus.com here and here.

    ofstream inherits from ostream. fstream inherits from iostream, which inherits from both istream and stream. Generally ofstream only supports output operations (i.e. textfile << "hello"), while fstream supports both output and input operations but depending on the flags given when opening the file. In your example, the open mode is ios_base::in | ios_base::out by default. The default open mode of ofstream is ios_base::out. Moreover, ios_base::out is always set for ofstream objects (even if explicitly not set in argument mode).

    Use ofstream when textfile is for output only, ifstream for input only, fstream for both input and output. This makes your intention more obvious.

    0 讨论(0)
  • 2021-01-11 17:27

    ofstream only has methods for outputting, so for instance if you tried textfile >> whatever it would not compile. fstream can be used for input and output, although what will work depends on the flags you pass to the constructor / open.

    std::string s;
    std::ofstream ostream("file");
    std::fstream stream("file", stream.out);
    
    ostream >> s; // compiler error
    stream >> s; // no compiler error, but operation will fail.
    

    The comments have some more great points.

    0 讨论(0)
提交回复
热议问题