std::bitset<N>::to_string

来自cppreference.com
< cpp‎ | utility‎ | bitset
 
 
工具库
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)
(C++20)
swap 与类型运算
(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::string 构造函数抛出 std::bad_alloc

示例

#include <iostream>
#include <bitset>
 
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++11 起,函数模板可以有默认模板实参。LWG 问题 1113 移除了辅助模板 (2-4) 并添加了对应的默认模板实参。

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 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 整数表示
(公开成员函数)