Translations of this page?:

getline

文法:

    istream& istream::getline( char* バッファ, streamsize 文字数 );
    istream& istream::getline( char* バッファ, streamsize 文字数, char 区切り文字 );

getline()関数は入力ストリームに対して使用されます。”区切り文字”引数がない場合には、改行コードが区切り文字としてセットされます。getline()は次の条件を満たすまで、読み込みます。

  • 文字数 - 1 文字まで読み込んだ。
  • EOFに遭遇した。
  • 区切り文字に達するまで読み込んだ。区切り文字はバッファには格納されない。

区切り文字(通常は改行)が読み込まれない場合、入力ストリームには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

 
• • • SitemapRecent changesRSScc