operator<<,>>(std::bitset)
template <class CharT, class Traits, size_t N> std::basic_ostream<CharT, Traits>& operator<<(std::basic_ostream<CharT, Traits>& os, |
(1) | |
template <class CharT, class Traits, size_t N> std::basic_istream<CharT, Traits>& operator>>(std::basic_istream<CharT, Traits>& is, |
(2) | |
从字符流插入或释出 bitset 。
1) 写 bitset
x
入字符流 os
,如同首先用 to_string() 将它转换成 basic_string<CharT,Traits>
,再用 operator<< (对字符串是有格式输出函数 (FormattedOutputFunction) )将它写入 os
。为一与零使用的字符,通过以 '1' 和 '0' 为参数调用 std::use_facet<std::ctype<CharT>(os.getloc()).widen() 从当前感染的本地环境获得。2) 表现为有格式输入函数 (FormattedInputFunction) 。构造并检查 sentry 对象,这可能跳过前导空白符,之后从
is
释出至多 N
个字符,并存储字符于 bitset x
。释出字符直至
- 已读取
N
个字符 - 文件尾发生于
is
,或 - 下个字符既非
is.widen('0')
亦非is.widen('1')
。
若 N > 0
且未释出字符,则调用 is.setstate(ios_base::failbit)
。
参数
os | - | 要写入的字符流 |
is | - | 要读取的字符流 |
x | - | 要读取或写入的 bitset |
返回值
操作于上的字符流,例如 os
或 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 3199 | C++98 | 释出 std::bitset<0> 始终设置 failbit
|
这种释出始终不设置 failbit
|
参阅
进行二进制左移和右移 (公开成员函数) |