1

マスクunsigned long longの形でそれを印刷する方法がありますか?hexstd::string

0001バイナリ( 、0010、などの値0100)マスクを反復しようとしました:

std::stringstream str;
std::string result;
for (unsigned long long mask = 1; mask != 0; mask <<= 1) {
    str << mask;
    str >> result;
    std::cout << result << std::endl;
    str.flush();
}

まだ値しか表示されません== 1(ライブサンプルはこちらをご覧ください)。

だから私はどのようにすべての可能な一意のビットマスクを印刷するのだろうかunsigned long long?

4

3 に答える 3

1

マスクunsigned long longの形でそれを印刷する方法がありますか?hexstd::string

std::hex16 進数で数値を出力するために使用する必要があります。また、stringstreamオブジェクトを再利用するには、メソッドを使用してその内容を実際にクリアする必要があり、次str()の呼び出しによってエラー状態フラグをクリアする必要があることにも注意してclear()ください。

#include <iostream>
#include <sstream>

int main()
{
    std::stringstream str;
    std::string result;
    for (unsigned long long mask = 1; mask != 0; mask <<= 1)
    {
        // retrieve the string:
        str << std::hex << mask;
        str >> result;
        std::cout << result << std::endl;

        // clear the stringstream:
        str.clear();
        str.str(std::string());
    }
}

ostringstream を再利用する方法を参照してください。:)

于 2013-03-19T11:23:09.900 に答える
1

str.clear()ではなく、を使用する必要がありますstr.flush()。そして、六角部分についてはこれを見てください

于 2013-03-19T11:14:40.127 に答える
0

unsigned long long のすべての値は一意です。それを繰り返して、この質問を見てください Is there a printf converter to print in binary format?

[編集] ああ、1 つのビットが設定された値のみが必要なようですね。OK、反復せず、シフトスルーします。

于 2013-03-19T11:14:12.470 に答える