operator<<,>>(std::bitset)
提供: cppreference.com
<tbody>
</tbody>
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) まず 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
|
関連項目
| バイナリ左シフトおよび右シフトを行います (パブリックメンバ関数) |