最終更新日時: 2026年02月20日 15時50分20秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<istream>

# std::basic_istream::readsome

    streamsize readsome(char_type* s, streamsize n);

## 概要

（非書式化入力関数）ストリームから指定した数の文字を入力する。 ただし、その時点でストリームバッファに読み込まれているデータのみを読み取り対象とし、指定サイズちょうどのデータが得られる保証されない点が`read`と異なる。

## 効果

1. `sentry`オブジェクトを構築する。
2. `good()`メンバ関数を呼び出して`false`であったら、ローカルエラー状態に`failbit`を設定して終了する。
3. `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でローカルエラー状態の概念が導入され、入力関数のエラー処理セマンティクスが明確化された