ファイルからの読み出しに関して質問があります。

アスキーファイルから1行づつデータを取り出して、それをstd::stringに放り込みたいと
思ってます。

で、まず以下のようにしました。

std::ifstream fsHoge("hoge.txt");

while( !fsHoge.eof())
{
string strBuf;

fsHoge >> strBuf;

cout << strBuf.c_str() << std::endl;
}

ですが、これはhoge.txtの中身が
aaa bbb ccc
ddd eee fff 111 222 333

のような場合には意図したようになりません。

char szBuf[1024];
fsHoge.getline(szBuf, 1024);
cout << szBuf << std::endl;

とgetlineを使えば実現できるのですが、1行の長さが1024を超える可能性があるので
不安です。サイズを大きめにとっておけばいいのですが、せっかくstringを使ってるのに
ここでchar[]を使いたくないです。

希望としては、

fsHoge >> strBuf;

としたときに、スペースも文字列として認識する方法とかがあればいいなと思ってます。
何かいい方法ご存じないでしょうか?よろしくお願いします。