streamsize readsome(char_type* s, streamsize n);
概要
(非書式化入力関数)ストリームから指定した数の文字を入力する。
ただし、その時点でストリームバッファに読み込まれているデータのみを読み取り対象とし、指定サイズちょうどのデータが得られる保証されない点がreadと異なる。
効果
sentryオブジェクトを構築する。good()メンバ関数を呼び出してfalseであったら、ローカルエラー状態にfailbitを設定して終了する。rdbuf()->in_avail()の値により以下のように処理を進める。-1ならローカルエラー状態にeofbitを設定する。0なら何もしない。1以上ならmin(rdbuf()->in_avail(), n)だけの文字を読み込む(nは仮引数)。
戻り値
sに読み込まれた文字数。
例
#include <iostream>
#include <string>
#include <sstream>
std::string get_word(std::istream& is) {
char s[8];
auto size = is.readsome(s, sizeof s);
return std::string(s, size);
}
int main() {
std::istringstream is("123456789");
std::cout << get_word(is) << std::endl;
}
出力
12345678
実装例
TBD
バージョン
言語
- C++98
参照
read- P1264R2 Revising the wording of stream input operations
- C++23でローカルエラー状態の概念が導入され、入力関数のエラー処理セマンティクスが明確化された