std::istream and std::ifstream objects define the eof() member function which returns true when the stream object has reached the end of a file. Note that at least one read operation must be performed to raise the eof() flag. Thus, opening an empty file or positioning the file pointer at a file's end alone won't cause the eof() function to return true. You must read at least once from the stream or file afterwards.
Here's a simple program that reads input from the keyboard until the user presses CTL-Z (the equivalent to EOF on most platforms) and then displays all the previously entered characters back on the user's screen:
using namespace std;
vector <char> buff; // for storing input
while(cin.get(c) && (!cin.eof())) //until CTL-Z is pressed
for (int i=0; i<buff.size(); ++i) // display input