名前空間
変種
操作

std::basic_istream::getline

提供: cppreference.com
< cpp‎ | io‎ | basic istream
 
 
入出力ライブラリ
入出力マニピュレータ
Cスタイルの入出力
バッファ
(C++98で非推奨)
ストリーム
抽象
ファイル入出力
文字列入出力
配列入出力
(C++98で非推奨)
(C++98で非推奨)
(C++98で非推奨)
同期化出力
エラーカテゴリインタフェース
(C++11)
 
 
basic_istream& getline( char_type* s, std::streamsize count );
(1)
basic_istream& getline( char_type* s, std::streamsize count, char_type delim );
(2)

改行または指定された区切り文字までストリームから文字を抽出します。

1つめのバージョンは getline(s, count, widen('\n')) と同等です。

UnformattedInputFunction として動作します。 sentry オブジェクトの構築および確認の後、以下のいずれか (示されている順に確認されます) が発生するまで、 *this から文字を抽出し、それらを最初の要素が s によって指されている配列の連続する位置に格納します。

  • 入力シーケンスでファイル終端状況が発生した (この場合、 setstate(eofbit) が実行されます)。
  • 次の利用可能な文字 cTraits::eq(c, delim) によって決定される区切り文字である。 区切り文字は (basic_istream::get() と異なり) 抽出され、 gcount() に数えられますが、格納されません。
  • count-1 個の文字が抽出された (この場合、 setstate(failbit) が実行されます)。

1文字も抽出しなかった場合 (例えば count < 1 の場合)、 setstate(failbit) が実行されます。

いずれの場合でも、 count>0 であれば、配列の次の連続する位置にヌル文字 CharT() を格納し、 gcount() を更新します。

目次

[編集] ノート

条件#2は条件#3の前に確認されるため、バッファにちょうど収まる入力行は failbit を発生させません。

終端の文字が抽出された文字として数えられるため、空の入力行は failbit を発生させません。

[編集] 引数

s - 文字を格納するための文字列へのポインタ
count - s の指す文字列のサイズ
delim - 抽出を停止する区切り文字。 抽出されますが格納されません

[編集] 戻り値

*this

[編集] 例外

エラーが発生し (エラー状態フラグが goodbit でなく)、その状態に対して投げるために exceptions() がセットされている場合は failure

内部の操作が例外を投げた場合、それはキャッチされ、 badbit がセットされます。 exceptions()badbit に対してセットされていれば、その例外が投げ直されます。

[編集]

#include <iostream>
#include <sstream>
#include <vector>
#include <array>
 
int main()
{
    std::istringstream input("abc|def|gh");
    std::vector<std::array<char, 4>> v;
 
    // note: the following loop terminates when std::ios_base::operator bool()
    // on the stream returned from getline() returns false
    for (std::array<char, 4> a; input.getline(&a[0], 4, '|'); ) {
        v.push_back(a);
    }
 
    for (auto& a : v) {
        std::cout << &a[0] << '\n';
    }
}

出力:

abc
def
gh

[編集] 関連項目

入出力ストリームから文字列にデータを読み込みます
(関数) [edit]
書式付きデータを抽出します
(パブリックメンバ関数) [edit]
文字を抽出します
(パブリックメンバ関数) [edit]
文字のブロックを抽出します
(パブリックメンバ関数) [edit]