名前空間
変種
操作

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

From cppreference.com
< cpp‎ | utility‎ | bitset
 
 
ユーティリティライブラリ
言語サポート
型のサポート (基本型、RTTI)
ライブラリ機能検査マクロ (C++20)
プログラムユーティリティ
可変引数関数
コルーチンサポート (C++20)
契約サポート (C++26)
三方比較
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

汎用ユーティリティ
関係演算子 (C++20で非推奨)
 
 
ヘッダー <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 を、まず std::basic_string<CharT, Traits>to_string() を使用して変換し、その後 operator<<(文字列用の FormattedOutputFunction)を使用して os に書き込むように、文字ストリーム os に書き込みます。
1と0に使用する文字は、現在のロケールから '1''0' を引数として std::use_facet<std::ctype<CharT>>(os.getloc()).widen() を呼び出して取得されます。
2) FormattedInputFunction として動作します。セントリーオブジェクトを構築してチェックした後(先頭の空白をスキップする場合があります)、is から最大 N 文字を抽出し、その文字をビットセット x に格納します。
文字は、以下のいずれかの条件が満たされるまで抽出されます。
  • N 文字が読み込まれた。
  • is でファイルの終端に達した。
  • 次の文字が is.widen('0') でも is.widen('1') でもない。
N > 0 であり、文字が抽出されなかった場合、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; // reads "001", stream still holds "101"
    std::cout << b1 << '\n';
 
    std::bitset<8> b2;
    bit_stream >> b2; // reads "101", populates the 8-bit set as "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 を設定しません

[編集] 関連項目

ビット単位の左シフトと右シフトを実行する
(public member function) [編集]
English 日本語 中文(简体) 中文(繁體)