我想存储一个 2 16位的静态常量位集,其中包含永远不会改变的 1 和 0 的特定序列。
我想过使用这篇文章提出的初始化字符串:
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: compiler limit: string exceeded 65535 bytes in length。我的字符串是 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...");