0

我正在使用 C++ 做我的第一步,在一些帮助下,我创建了一个代码来实现一个简单的功能。但我有一个问题。我正在使用一个需要特定库的 bitset 函数,但我不知道谁在我的代码中引入这个库。

我一直在网上阅读一些资料,但我没有做到这一点,所以我想知道是否有人可以详细告诉我如何做到这一点。

为了让你有一个想法,我一直在寻找http://www.boost.org/doc/libs/1_36_0/libs/dynamic_bitset/dynamic_bitset.htmlhttp://www.boost.org/doc/libs/1_46_0 /libs/dynamic_bitset/dynamic_bitset.html#cons2和类似的地方。

我附上了我的代码,以便您制作并了解我在做什么。

提前致谢 :)

// Program that converts a number from decimal to binary and show the positions where the bit of the number in binary contains 1

#include<iostream>
#include <boost/dynamic_bitset.hpp>
int main() {
unsigned long long dec;
std::cout << "Write a number in decimal: ";
std::cin >> dec;
boost::dynamic_bitset<> bs(64, dec);
std::cout << bs << std::endl;
for(size_t i = 0; i < 64; i++){
    if(bs[i])
        std::cout << "Position " << i << " is 1" << std::endl;
}
//system("pause");
return 0;

}

4

1 回答 1

1

如果您不希望您bitset的动态增长,您可以使用bitset内置的所有符合标准的 C++ 实现:

#include <iostream>
#include <bitset>

int main() {
  unsigned long long dec;
  std::cout << "Write a number in decimal: ";
  std::cin >> dec;
  const size_t number_of_bits = sizeof(dec) * 8;
  std::bitset<number_of_bits> bs(dec);
  std::cout << bs << std::endl;
  for (size_t i = 0; i < number_of_bits; i++) {
    if (bs[i])
      std::cout << "Position " << i << " is 1" << std::endl;
  }
  return 0;
}

要使用dynamic_bitset该类,您必须下载Boost库并将 boost 文件夹添加到编译器的包含目录中。如果你使用的是 GNU C++ 编译器,你应该是这样的:

g++ -I path/to/boost_1_46_1 mycode.cpp -o mycode
于 2011-03-23T11:42:21.327 回答