我正在使用C ++完成我的第一步,并在一些帮助下创建了一个代码来实现简单的功能。但我有一个问题。我正在使用需要特定库的bitset函数,我不知道在我的代码中将这个库引入谁。
我一直在阅读网上的一些信息,但我没有做到这一点,所以我想知道你们中是否有人能详细告诉我该怎么做。
这样你就可以了解我一直在http://www.boost.org/doc/libs/1_36_0/libs/dynamic_bitset/dynamic_bitset.html,http://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;
}
答案 0 :(得分: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文件夹添加到编译器的include目录中。如果您使用的是GNU C ++编译器,您应该这样:
g++ -I path/to/boost_1_46_1 mycode.cpp -o mycode