ID 名前 性別

というフォーマットのファイルがあるとします。
これを、それぞれを文字列として、構造体に格納するとします。
構造体の例:
struct{
std::string a; // IDを格納
std::string b; // 名前を格納
std::string c; // 性別を格納
}_dataType;

各行には、上記の3つのレコードだけだとして、
区切り文字は、半角空白か、Tab('\t')
行末には空白文字は許容するけど、それは、構造体の「性別」を格納する変数には
含まない

てな条件で、データファイルを読み込む場合、
std::stringで、std::getline() を使う
char * で、fstream::getline()をつかう
char * で、fgets()を使う
その他
どれが一番楽なのか教えてほしいっす。できれば、切り分けするところのサンプルなんかも。。。

環境:gcc + cygwin
できれば、Linuxにも流用したいので、Win系のライブライは使いたくないです。