std::basic_istream<CharT,Traits>::getline
From cppreference.com
< cpp | io | basic istream
| basic_istream& getline( char_type* s, std::streamsize count ); |
(1) | |
| basic_istream& getline( char_type* s, std::streamsize count, char_type delim ); |
(2) | |
ストリームから、行末または指定された区切り文字 delim まで文字を抽出します。
最初のオーバーロードは getline(s, count, widen('\n')) と同等です。
UnformattedInputFunction として動作します。セントリーオブジェクトを構築してチェックした後、*this から文字を抽出し、s が指す配列の連続する場所に格納します。ただし、以下のいずれかが発生するまで(以下の順序でテストされます)。
- 入力シーケンスでファイルの終端条件が発生する。
- 次の利用可能な文字 c が区切り文字である(Traits::eq(c, delim) によって決定される)。区切り文字は抽出され(
basic_istream::get()とは異なり)、gcount() にカウントされますが、格納はされません。 - count が非正であるか、count - 1 文字が抽出された(この場合、setstate(failbit) が呼び出される)。
関数が文字を一切抽出しない場合、failbit はローカルエラー状態に設定されてから、setstate() が呼び出されます。
いずれの場合も、count > 0 であれば、次に続く配列の場所にヌル文字 CharT() を格納し、gcount() を更新します。
目次 |
[編集] 注記
条件 #2 は条件 #3 より先にテストされるため、バッファにちょうど収まる入力行は failbit をトリガーしません。
終端文字は抽出された文字としてカウントされるため、空の入力行は failbit をトリガーしません。
[編集] パラメータ
| s | - | 文字を格納する文字配列へのポインタ |
| count | - | s が指す文字配列のサイズ |
| delim | - | 抽出を停止する区切り文字。抽出されますが、格納されません。 |
[編集] 戻り値
*this
[編集] 例外
failure: エラーが発生した場合(エラー状態フラグが goodbit ではない)で、exceptions() がその状態に対してスローするように設定されている場合。内部操作が例外をスローした場合、それはキャッチされ、badbit が設定されます。exceptions() が badbit に対して設定されている場合、例外は再スローされます。
[編集] 例
このコードを実行
#include <array> #include <iostream> #include <sstream> #include <vector> 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
[編集] 不具合報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 531 | C++98 | std::getline は、count が非正の場合 |
この場合、文字が 抽出されない |
[編集] 関連項目
| I/Oストリームから文字列にデータを読み込む (function template) | |
| 書式付きデータを抽出する (public member function) | |
| 文字を抽出する (public member function) | |
| 文字のブロックを抽出する (public member function) |