3

変更されない特定の 1 と 0 のシーケンスを使用して、 2 16ビットの静的定数ビットセットを格納したいと考えています。

この投稿で提案されているように、初期化文字列を使用することを考えました:

std::bitset<1<<16> myBitset("101100101000110 ... "); // the ellipsis are replaced by the actual 65536-character sequence

しかし、コンパイラ (VS2013) では、「文字列が長すぎます」というエラーが表示されます。

アップデート

上記のリンクの投稿で提案されているように、文字列を小さなチャンクに分割してみました。

std::bitset<1<<16> myBitset("100101 ..."
                            "011001 ..."
                            ...
                            );

しかし、エラーC1091: コンパイラの制限: 文字列の長さが 65535 バイトを超えています。私の文字列は 65536 バイトです (技術的には 65537、EOS 文字付き)。

他のオプションは何ですか?

アップデート

luk32のおかげで、これは私が最終的に得た美しいコードです:

const std::bitset<1<<16> bs = (std::bitset<1<<16>("101011...")
    << 7* (1<<13)) | (std::bitset<1<<16>("110011...")
    << 6* (1<<13)) | (std::bitset<1<<16>("101111...")
    << 5* (1<<13)) | (std::bitset<1<<16>("110110...")
    << 4* (1<<13)) | (std::bitset<1<<16>("011011...")
    << 3* (1<<13)) | (std::bitset<1<<16>("111011...")
    << 2* (1<<13)) | (std::bitset<1<<16>("111001...")
    << 1* (1<<13)) | std::bitset<1<<16>("1100111...");
4

3 に答える 3