this function should read a file word by word and it does work till the last word, where the run stops
void readFile( ) { ifstream file; file.open ("program.txt"); string word; char x ; word.clear(); while ( ! file.eof() ) { x = file.get(); while ( x != ' ' ) { word = word + x; x = file.get(); } cout<< word <<endl; word.clear(); } }
any one see what is the problem and how it can be solved??
Steps To Read A File:Open a file using the function fopen() and store the reference of the file in a FILE pointer. Read contents of the file using any of these functions fgetc(), fgets(), fscanf(), or fread(). File close the file using the function fclose().
we have to use the file input stream to read file contents. The file stream will open the file by using file name, then using FileStream, load each word and store it into a variable called word.
Call open() method to open a file “tpoint. txt” to perform read operation using object newfile. If file is open then Declare a string “tp”. Read all data of file object newfile using getline() method and put it into the string tp.
First of all, don't loop while (!eof())
, it will not work as you expect it to because the eofbit
will not be set until after a failed read due to end of file.
Secondly, the normal input operator >>
separates on whitespace and so can be used to read "words":
std::string word; while (file >> word) { ... }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With