using namespace std;
fstream fs( "C:\\a.txt", ios::in);
string strtoken;
while( !fs.eof() ){
  fs >> strtoken;
  cout << strtoken << endl;
}

これに
AAA BBB CCC
と書かれたファイル(CCCの後ろに\n有り)を読ませると、

AAA
BBB
CCC
CCC

と、最後のトークンが2回出力されてしまいます。
最後CCCの後ろの改行を無くせば再現されないところまでわかったのですが、対処法がわかりません。
どうすれば最後のトークンが2回出力されるのを防げるでしょうか。