I want to create a class for I/O operations. This class take filename as parameter and then provides functions to write and read from file. I had to include two different fstream objects,one for input and one for output ,so I designed such an implementation.If you can see a better approach or improve my design ,please tell me...

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

class FileHandler
	FileHandler(char *);
	char* getFileName()const;
	void setFileName(char *);
	void openFileToRead();
	char* readLine();
	void openFileToWrite();
	void writeLine(char *);
	void closeFile();
	char* fileName;
	ofstream fout;
	ifstream fin;
8 Years
Discussion Span
Last Post by gangsta1903

Because they do input or output. One could say the same about your FileHandler class. Meh. If you're only gonna be reading use ifstream, only writing use ofstream, if you're gonna be doing both use fstream. I never liked using fstream much. But am normally not in a situation where I need to read and write at the same time either.


So that you can obtain a certain level of protection.

For example, You have an input data file with sensitive information and you don't want anyone to modify it. You can write a function that accesses and reads from the file using an ifstream file pointer, but if the caller tries to write to the file, it will throw an error.

You probably want to see what all functions that fstream class supports, it will give you some ideas on what to implement. You may want a function that tells you where your file pointer is currently at, or a function which reads a block of data instead of a line , or one that reads a character at a time etc. Depends on how deep you want to go. But for a basic set of ops, your class looks ok.


thank you very much for your replies.I need both writing and reading at the same time or one by one in order,so using fstream for both input and output will make my job easier.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.