Namespaces
Variants

operator<<,>> (std::bitset)

From cppreference.net
Utilities library
ヘッダーで定義 <bitset>
template < class CharT, class Traits, std:: size_t N >

std:: basic_ostream < CharT, Traits > &

operator << ( std:: basic_ostream < CharT, Traits > & os, const std:: bitset < N > & x ) ;
(1)
template < class CharT, class Traits, std:: size_t N >

std:: basic_istream < CharT, Traits > &

operator >> ( std:: basic_istream < CharT, Traits > & is, std:: bitset < N > & x ) ;
(2)

ビットセットを文字ストリームに挿入または抽出します。

1) ビットセット x を文字ストリーム os に書き込む。まず to_string() を使用して std:: basic_string < CharT, Traits > に変換し、その後 operator<< (文字列に対する FormattedOutputFunction である)を使用して os に書き込むかのように動作する。
1と0の表現に使用する文字は、現在適用されているロケールから std:: use_facet < std:: ctype < CharT >> ( os. getloc ( ) ) . widen ( ) を呼び出し、引数として '1' '0' を指定して取得する。
2) FormattedInputFunction として振る舞う。セントリオブジェクトを構築・チェックした後(先頭の空白をスキップする場合がある)、 is から最大 N 文字を抽出し、ビットセット x に格納する。
文字抽出は以下のいずれかが発生するまで継続される:
  • N 文字が読み込まれた場合
  • is でEOFが発生した場合
  • 次の文字が is. widen ( '0' ) でも is. widen ( '1' ) でもない場合
N > 0 かつ1文字も抽出されなかった場合、 is. setstate ( ios_base :: failbit ) が呼び出される。

目次

パラメータ

os - 書き込み先の文字ストリーム
is - 読み取り元の文字ストリーム
x - 読み書きされるビットセット

戻り値

1) os
2) is

#include <bitset>
#include <iostream>
#include <sstream>
int main()
{
    std::string bit_string = "001101";
    std::istringstream bit_stream(bit_string);
    std::bitset<3> b1;
    bit_stream >> b1; // "001"を読み取り、ストリームには"101"が残る
    std::cout << b1 << '\n';
    std::bitset<8> b2;
    bit_stream >> b2; // "101"を読み取り、8ビットセットを"00000101"で埋める
    std::cout << b2 << '\n';
}

出力:

001
00000101

欠陥報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 303 C++98 単一バイト文字が
is から抽出されたが、 CharT は複数バイトを持つ可能性がある
CharT を抽出し、
ワイド化された '0' および '1' と比較する
LWG 396 C++98 operator << によって書き込まれる内容はロケール非依存であった ワイド化された '0' および '1' を書き込む
LWG 3199 C++98 std::bitset<0> の抽出は常に failbit を設定する そのような抽出は failbit を設定しない

関連項目

バイナリ左シフトおよび右シフトを実行する
(公開メンバ関数)