std::bitset<N>::to_string
来自cppreference.com
(1) | ||
template< class CharT, |
(C++11 前) | |
template< class CharT = char, |
(C++11 起) (C++23 起 constexpr) |
|
template< class CharT, class Traits > std::basic_string<CharT, Traits> |
(2) | (C++11 前) |
template< class CharT > std::basic_string<CharT> |
(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) 用于简化 2) 使用默认的分配器 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 整数表示 (公开成员函数) |