operator<<,>>(std::bitset)
提供: cppreference.com
template <class CharT, class Traits, std::size_t N> std::basic_ostream<CharT, Traits>& operator<<(std::basic_ostream<CharT, Traits>& os, |
(1) | |
template <class CharT, class Traits, std::size_t N> std::basic_istream<CharT, Traits>& operator>>(std::basic_istream<CharT, Traits>& is, |
(2) | |
ビットセットを文字ストリームに挿入または抽出します。
1) まず to_string() を使用して
basic_string<CharT,Traits>
に変換し、それを operator<< (文字列に対する FormattedOutputFunction) を使用して os
に書き込んだかのように、ビットセット x
を文字ストリーム os
に書き込みます。 1および0のために使用する文字は、引数として '1' および '0' を渡して std::use_facet<std::ctype<CharT>>(os.getloc()).widen() を呼ぶことによって、現在設定されているロケールから取得されます。2) FormattedInputFunction として動作します。 先頭のホワイトスペースをスキップするかもしれない sentry オブジェクトの構築および確認後、
is
から最大 N
文字を抽出し、ビットセット x
にその文字を格納します。文字は以下のいずれかが発生するまで抽出されます。
-
N
文字読み込んだ。 -
is
でファイル終端が発生した。 - 次の文字が
is.widen('0')
でもis.widen('1')
でもない。
N > 0
かつ1文字も抽出されなかった場合は is.setstate(ios_base::failbit)
が呼ばれます。
目次 |
[編集] 引数
os | - | 書き込む文字ストリーム |
is | - | 読み込む文字ストリーム |
x | - | 読み書きするビットセット |
[編集] 戻り値
操作対象の文字ストリーム、すなわち os
または is
。
[編集] 例
Run this code
#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」を読み込み、 b2 に「00000101」として格納されます。 std::cout << b2 << '\n'; }
出力:
001 00000101
[編集] 欠陥報告
以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。
DR | 適用先 | 発行時の動作 | 正しい動作 |
---|---|---|---|
LWG 3199 | C++98 | extracting a std::bitset<0> always set failbit
|
such extraction never sets failbit
|
[編集] 関連項目
バイナリ左シフトおよび右シフトを行います (パブリックメンバ関数) |