文法:
istream& istream::getline( char* バッファ, streamsize 文字数 ); istream& istream::getline( char* バッファ, streamsize 文字数, char 区切り文字 );
getline()関数は入力ストリームに対して使用されます。”区切り文字”引数がない場合には、改行コードが区切り文字としてセットされます。getline()は次の条件を満たすまで、読み込みます。
区切り文字(通常は改行)が読み込まれない場合、入力ストリームにはfail状態がセットされます。
次のサンプルコードは、getline()関数を使用してテキストファイルから最初の99文字(1文字は終端文字のために予約されています)を表示しています。あるいは、一度に1行読み込みます。(99文字読み込むよりも、EOF/1行が優先)
ifstream fin("tmp.dat"); int MAX_LENGTH = 100; char line[MAX_LENGTH]; while( fin.getline(line, MAX_LENGTH) ) { cout << "read line: " << line << endl; }
文字の配列ではなく、文字列として1行分読み込みたい場合には、string getline関数を使用して下さい。
Microsoftのコンパイラはでは、getlineは余計な文字を読み込むことがあります。詳しくはMicrosoft/getlineのバグのドキュメントを参照してください。
関連トピック: gcount, get, string getline, ignore, read