cpp/string/basic string/getline

提供:cppreference.com
移動: 案内, 検索

構文:

 #include <string>
 istream& std::getline( istream& is, string& s );
 istream& std::getline( istream& is, string& s, charT delimiter );

C++の string ヘッダには(stringのメンバ関数ではない)グローバル関数 getline() が定義されている. これは入力ストリーム is から1行を読み込み文字列 s にセットする. デリミタが指定されている場合はそれを終端として利用する.指定されない場合は二つ目の定義を以下のように呼び出す.

 return getline( is, s, is.widen( '\n' ) );

注: 入力ストリームは文字の型Charに対応したbasic_istream<charT>型.

次の例は標準入力から一行読み込みそれを標準出力に表示する.

 string s;
 getline( cin, s );
 cout << "You entered " << s << endl;

行を取り出した後,それを加工するには stringstreams が利用できる. 次の例は標準入力から数字を読み込むが,ダブルスラッシュではじまる行はコメントとして無視する.

  expects either space-delimited numbers or lines that start with
  two forward slashes ()
 string s;
 while( getline(cin,s) ) {
   if( s.size() >= 2 && s[0] == '/' && s[1] == '/' ) {
     cout << "  ignoring comment: " << s << endl;
   } else {
     istringstream ss(s);
     double d;
     while( ss >> d ) {
       cout << "  got a number: " << d << endl;
     }
   }
 }

上のプログラムに適当な入力を与えると以下の出力を得る.

  test
   ignoring comment:  test
 23.3 -1 3.14159
   got a number: 23.3
   got a number: -1
   got a number: 3.14159
  next batch
   ignoring comment:  next batch
 1 2 3 4 5
   got a number: 1
   got a number: 2
   got a number: 3
   got a number: 4
   got a number: 5
 50
   got a number: 50

getline()は現在のファイル位置から読み込みを始めるので,行の残りや指定したデリミタまでの文字列を得るのにも使える.

関連: get, getline, stringstream

個人用ツール
名前空間
変種
操作
案内
ツールボックス
他の言語