operator<<,>>(std::bitset)
From cppreference.com
| ヘッダー <bitset> で定義 |
||
| template< class CharT, class Traits, std::size_t N > std::basic_ostream<CharT, Traits>& |
(1) | |
| template< class CharT, class Traits, std::size_t N > std::basic_istream<CharT, Traits>& |
(2) | |
ビットセットを文字ストリームに挿入または抽出します。
1) ビットセット x を、まず std::basic_string<CharT, Traits> に
1と0に使用する文字は、現在のロケールから '1' と '0' を引数として std::use_facet<std::ctype<CharT>>(os.getloc()).widen() を呼び出して取得されます。
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') でもない。
目次 |
[編集] パラメータ
| 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) |