std::bitset<N>::to_string
来自cppreference.com
(1) | ||
template<class CharT, class Traits, class Allocator > std::basic_string<CharT, Traits, Allocator> | (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> to_string( CharT zero = CharT('0'), | (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::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 添加的默认实参 | 一起添加 |
[编辑]参阅
返回数据的 unsignedlong 整数表示 (公开成员函数) | |
(C++11) | 返回数据的 unsignedlonglong 整数表示 (公开成员函数) |