std::bitset<N>::to_string
来自cppreference.com
| (1) | ||
| (C++11 前) | ||
| (C++11 起) (C++23 起为 constexpr) |
||
| (2) | (C++11 前) | |
| |
(3) | (C++11 前) |
| |
(4) | (C++11 前) |
将 bitset 的内容转换成字符串。用 zero 表示拥有值 false 的位,用 one 表示拥有值 true 的位。
产生的字符串包含 N 个字符,它的首字符对应末(第 N-1)位,它的尾字符对应首位。
|
因为函数模板不能有默认模板实参,所以必须提供所有的模板类型实参。重载 (2-4) 用于简化 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 添加的默认实参 | 一起添加 |
