operator<<,>>(std::bitset)
来自 cppreference.cn
定义于头文件 <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) | |
从字符流插入或提取 bitset。
1) 将 bitset x 写入字符流 os,如同先将其转换为 std::basic_string<CharT, Traits> 并使用 to_string() 写入 os,然后使用 operator<<(它是字符串的 FormattedOutputFunction)。
用于 1 和 0 的字符通过调用 std::use_facet<std::ctype<CharT>>(os.getloc()).widen() 并以 '1' 和 '0' 作为参数从当前植入的区域设置中获得。
用于 1 和 0 的字符通过调用 std::use_facet<std::ctype<CharT>>(os.getloc()).widen() 并以 '1' 和 '0' 作为参数从当前植入的区域设置中获得。
2) 行为类似于 FormattedInputFunction。在构造和检查可能跳过前导空格的哨兵对象后,从 is 中提取最多 N 个字符,并将字符存储在 bitset x 中。
提取字符直到满足以下任一条件:
提取字符直到满足以下任一条件:
- 已读取 N 个字符,
- 在 is 中发生文件结尾,或
- 下一个字符既不是 is.widen('0') 也不是 is.widen('1')。
目录 |
[编辑] 参数
os | - | 要写入的字符流 |
is | - | 要从中读取的字符流 |
x | - | 要读取或写入的 bitset |
[编辑] 返回值
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 |
[编辑] 参见
执行二进制左移和右移 (公共成员函数) |