- istream[meta header]
- std[meta namespace]
- basic_istream[meta class]
- function[meta id-type]
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;
}- readsome[color ff0000]
12345678
TBD
- C++98
read- P1264R2 Revising the wording of stream input operations
- C++23でローカルエラー状態の概念が導入され、入力関数のエラー処理セマンティクスが明確化された