命名空间
变体
操作

operator<<,>>(std::bitset)

来自 cppreference.com
< cpp‎ | utility‎ | bitset
 
 
工具库
语言支持
类型支持 (基本类型, RTTI)
库特性测试宏 (C++20)
动态内存管理
程序工具
协程支持 (C++20)
可变参数函数
调试支持
(C++26)
三路比较
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)   
(C++20)
交换类型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
基本字符串转换
(C++17)
(C++17)

 
 
定义于头文件 <bitset>
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)

从字符流中插入或提取一个 bitset。

1) 将 bitset x 写入字符流 os,如同先使用 to_string() 将其转换为 std::basic_string<CharT, Traits>,然后再使用 operator<<(它是字符串的 FormattedOutputFunction)将其写入 os
用于表示 1 和 0 的字符是通过调用 std::use_facet<std::ctype<CharT>>(os.getloc()).widen() 并以 '1''0' 作为参数从当前 imbued 的区域设置中获取的。
2) 表现为 格式化输入函数。在构造并检查了可能跳过前导空格的 sentry 对象后,从 is 中提取最多 N 个字符,并将这些字符存储在位集 x 中。
字符将被提取,直到:
  • 已读取 N 个字符,
  • is 中出现文件结尾,或
  • 下一个字符既不是 is.widen('0') 也不是 is.widen('1')
如果 N > 0 且未提取任何字符,则调用 is.setstate(ios_base::failbit)

内容

[编辑] 参数

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<< 写入的内容与区域设置无关 C++98 写入加宽的 '0''1' LWG 3199
C++11 C++98 提取 std::bitset<0> 始终设置 failbit 此类提取从不设置 failbit

[编辑] 另请参阅

执行二进制左移和右移
(公有成员函数) [编辑]