template <class CharT, class Traits, class Allocator>
basic_string<CharT, Traits, Allocator> to_string() const; // (1) C++03
template <class CharT = char,
class Traits = char_traits<CharT>,
class Allocator = allocator<CharT>>
basic_string<CharT, Traits, Allocator>
to_string(CharT zero = CharT('0'), CharT one = CharT('1')) const; // (1) C++11
template <class CharT = char,
class Traits = char_traits<CharT>,
class Allocator = allocator<CharT>>
constexpr basic_string<CharT, Traits, Allocator>
to_string(CharT zero = CharT('0'), CharT one = CharT('1')) const; // (1) C++23
概要
文字列に変換する。
戻り値
bitset
クラスのテンプレートパラメータN
の長さのbasic_string
オブジェクトを構築する。- 各ビットを文字表現に変換する
- C++03 : ビット値0は文字
CharT(0)
に、ビット値1は文字CharT(1)
に変換。 - C++11 : ビット値0はパラメータ
zero
の文字に、ビット値1はパラメータone
に変換。
- C++03 : ビット値0は文字
- 各ビットの文字表現を、構築した
basic_string
オブジェクトに順番に設定して返す。
例
#include <iostream>
#include <bitset>
int main()
{
std::bitset<8> bs(131uL);
// C++03版の使用法
std::string s1 = bs.to_string<char, std::char_traits<char>, std::allocator<char>>();
std::cout << s1 << std::endl;
// C++11版の使用法
std::string s2 = bs.to_string();
std::cout << s2 << std::endl;
}
出力
10000011
10000011
備考
- Visual C++、GCC(libstdc++)には、C++03でも
bs.to_string()
のように簡単に使用するための独自実装が追加で導入されていた。
参照
- LWG Issue 853.
to_string
needs updating withzero
andone
- C++11で、
0
を表す文字と1
を表す文字を指定できるようになった経緯のレポート
- C++11で、
- LWG Issue 1113.
bitset::to_string
could be simplified- C++11で、デフォルトの文字型が設定された経緯のレポート
- P2417R2 A more constexpr bitset