名前空間
変種
操作

std::bitset<N>::to_string

From cppreference.com
< cpp‎ | utility‎ | bitset
 
 
ユーティリティライブラリ
言語サポート
型のサポート (基本型、RTTI)
ライブラリ機能検査マクロ (C++20)
プログラムユーティリティ
可変引数関数
コルーチンサポート (C++20)
契約サポート (C++26)
三方比較
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

汎用ユーティリティ
関係演算子 (C++20で非推奨)
 
 
(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まで)

ビットセットの内容を文字列に変換します。値が false のビットには zero を、値が true のビットには one を使用します。

結果の文字列は 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まで)

目次

[edit] パラメータ

0 - false を表すために使用する文字
1 - true を表すために使用する文字

[edit] 戻り値

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)

[edit] 例外

std::bad_allocstd::basic_string のコンストラクタからスローする可能性があります。

[edit] 注記

C++11以降、関数テンプレートはデフォルトのテンプレート引数を持つことができます。LWG issue 1113 により、ヘルパーオーバーロード (2-4) が削除され、(1) に対応するデフォルトのテンプレート引数が追加されました。

[edit]

#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

[edit] 不具合報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 396 C++98 ゼロとイチのビットが文字 0
および 1 (これらは '0' および '1' に対応しません)
に変換されていました。
これらの文字の値を指定するためのパラメータが追加されました。
LWG 434 C++98 すべてのテンプレート引数を提供する必要がありました。 オーバーロード (2-4) が追加されました。
LWG 853 C++98 オーバーロード (2-4) には、LWG issue 396 で追加されたデフォルト引数がありませんでした。
さらに追加されました。
(注:原文では、この項目が完結していないように見えます。したがって、機械翻訳も未完のままです。)

[edit] 関連項目

データの unsigned long 整数表現を返す
(public member function) [編集]
(C++11)
データの unsigned long long 整数表現を返す
(public member function) [編集]
English 日本語 中文(简体) 中文(繁體)