std::basic_istream<CharT,Traits>::get
提供: cppreference.com
<tbody>
</tbody>
int_type get(); |
(1) | |
basic_istream& get( char_type& ch ); |
(2) | |
basic_istream& get( char_type* s, std::streamsize count ); |
(3) | |
basic_istream& get( char_type* s, std::streamsize count, char_type delim ); |
(4) | |
basic_istream& get( basic_streambuf& strbuf ); |
(5) | |
basic_istream& get( basic_streambuf& strbuf, char_type delim ); |
(6) | |
ストリームから文字を抽出します。
すべてのバージョンが UnformattedInputFunction として動作します。 sentry オブジェクトの構築および確認の後、以下のように動作します。
1) 文字をひとつ読み込み、利用可能であればそれを返します。 そうでなければ、
Traits::eof() を返し、 failbit および eofbit をセットします。2) 文字をひとつ読み込み、利用可能であればそれを
ch に格納します。 そうでなければ、 ch は変更されず、 failbit および eofbit をセットします。 書式付き文字入力の operator>> と異なり、この関数は signed char および unsigned char 型に対してオーバーロードしていないことに注意してください。3)
get(s, count, widen('\n')) と同じです。 つまり、 '\n' が見つかるまで最大 count-1 個の文字を読み込み、それを s の指す文字列に格納します。4) 文字を読み込み、それを最初の要素が
s によって指されている文字配列の連続する位置に格納します。 文字は以下のいずれかが発生するまで抽出され格納されます。count-1個の文字が格納された。
- 入力シーケンスでファイル終端状況が発生した (
setstate(eofbit)が呼ばれます)。
- 入力シーケンスでファイル終端状況が発生した (
- 次の利用可能な入力文字
cがTraits::eq(c, delim)によって判定されるようにdelimと等しい。 この文字は (basic_istream::getline() と異なり) 抽出されません。
- 次の利用可能な入力文字
1文字も抽出されなかった場合は
setstate(failbit) を呼びます。 いずれの場合でも、 count>0 であれば、配列の連続する次の位置にヌル文字 (CharT()) が格納されます。5)
get(strbuf, widen('\n')) と同じです。 つまり、 '\n' が見つかるまで利用可能な文字を読み込み、それを指定された basic_streambuf オブジェクトに挿入します。6) 文字を読み込み、それを指定された basic_streambuf オブジェクトによって制御されている出力シーケンスに挿入します。 文字は以下のいずれかが発生するまで抽出され
strbuf に挿入されます。- 入力シーケンスでファイル終端状況が発生した。
- 出力シーケンスへの挿入が失敗した (この場合、挿入される予定だった文字は抽出されません)。
- 次の使用可能な文字が
Traits::eq(c, delim)によって判定されるようにdelimと等しい。 この文字は抽出されません。
- 次の使用可能な文字が
- 例外が発生した (この場合、例外はキャッチされ、投げ直されません)。
1文字も抽出されなかった場合は
setstate(failbit) を呼びます。すべてのバージョンは gcount() の値を抽出された文字数に設定します。
引数
| ch | - | 結果を書き込む文字への参照 |
| s | - | 文字を格納する文字列へのポインタ |
| count | - | s の指す文字列のサイズ
|
| delim | - | 抽出を停止する区切り文字。 この文字は抽出されず、格納されません |
| strbuf | - | 内容を読み込む先のストリームバッファ |
戻り値
1) 抽出された文字、または
Traits::eof()。2-6)
*this。例外
エラーが発生し (エラー状態フラグが goodbit でなく)、その状態に対して投げるために exceptions() がセットされている場合は failure。
内部の操作が例外を投げた場合、それはキャッチされ、 badbit がセットされます。 exceptions() が badbit に対してセットされていれば、その例外が投げ直されます。
例
Run this code
#include <sstream>
#include <iostream>
int main()
{
std::istringstream s1("Hello, world.");
char c1 = s1.get(); // reads 'H'
std::cout << "after reading " << c1 << ", gcount() == " << s1.gcount() << '\n';
char c2;
s1.get(c2); // reads 'e'
char str[5];
s1.get(str, 5); // reads "llo,"
std::cout << "after reading " << str << ", gcount() == " << s1.gcount() << '\n';
std::cout << c1 << c2 << str;
s1.get(*std::cout.rdbuf()); // reads the rest, not including '\n'
std::cout << "\nAfter the last get(), gcount() == " << s1.gcount() << '\n';
}
出力:
after reading H, gcount() == 1
after reading llo,, gcount() == 4
Hello, world.
After the last get(), gcount() == 7
関連項目
| 文字のブロックを抽出します (パブリックメンバ関数) | |
| 書式付きデータを抽出します (パブリックメンバ関数) | |
| 文字と文字配列を抽出します (関数テンプレート) |