std::bitset<N>::to_string

来自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)

 
 
(1)
template< class CharT, class Traits, class Allocator >

std::basic_string<CharT, Traits, Allocator>
    to_string( CharT zero = CharT('0'),

               CharT one = CharT('1') ) const;
(C++11 前)
template<

    class CharT = char,
    class Traits = std::char_traits<CharT>,
    class Allocator = std::allocator<CharT>
>
std::basic_string<CharT, Traits, Allocator>
    to_string( CharT zero = CharT('0'),

               CharT one = CharT('1') ) const;
(C++11 起)
(C++23 起为 constexpr)
template< class CharT, class Traits >

std::basic_string<CharT, Traits>
    to_string( CharT zero = CharT('0'),

               CharT one = CharT('1') ) const;
(2) (C++11 前)
template< class CharT >

std::basic_string<CharT> to_string( CharT zero = CharT('0'),

                                    CharT one = CharT('1') ) const;
(3) (C++11 前)
std::string to_string( char zero = '0', char one = '1' ) const;
(4) (C++11 前)

bitset 的内容转换成字符串。用 zero 表示拥有值 false 的位,用 one 表示拥有值 true 的位。

产生的字符串包含 N 个字符,它的首字符对应末(第 N-1)位,它的尾字符对应首位。

因为函数模板不能有默认模板实参,所以必须提供所有的模板类型实参。重载 (2-4) 用于简化 to_string 的调用:

2) 使用默认的分配器 std::allocator
3) 使用默认的字符特征 std::char_traits 和默认的分配器 std::allocator
4) 使用默认的字符类型 char,默认的字符特征 std::char_traits 和默认的分配器 std::allocator
(C++11 前)

参数

zero - 用于表示 false 的字符
one - 用于表示 true 的字符

返回值

1) 转换出的字符串。
2) to_string<CharT, Traits, std::allocator<CharT>>(zero, one)
3) to_string<CharT, std::char_traits<CharT>, std::allocator<CharT>>(zero, one)
4) to_string<char, std::char_traits<char>, std::allocator<char>>(zero, one)

异常

可能会从 std::basic_string 的构造函数抛出 std::bad_alloc

注解

从 C++11 起,函数模板可以有默认模板实参。LWG 问题 1113 移除了辅助重载 (2-4) 并在 (1) 中添加了对应的默认模板实参。

示例

#include <bitset>
#include <iostream>
 
int main()
{
    std::bitset<8> b(42);
    std::cout << b.to_string() << '\n'
              << b.to_string('*') << '\n'
              << b.to_string('O', 'X') << '\n';
}

输出:

00101010
**1*1*1*
OOXOXOXO

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 396 C++98 零位和一位会转换成字符 0​ 和 1(它们并不与 '0''1' 对应) 添加参数以提供这些字符的值
LWG 434 C++98 需要提供所有模板实参 添加重载 (2-4)
LWG 853 C++98 重载 (2-4) 没有通过 LWG 问题 396 添加的默认实参 一起添加

参阅

返回数据的 unsigned long 整数表示
(公开成员函数)
(C++11)
返回数据的 unsigned long long 整数表示
(公开成员函数)