为 Bitset 赋值
Assign a value to Bitset
我很想知道为什么下面的代码可以工作!
根据 bitset 模板 class,您可以通过构造函数为 bitset(int 或二进制表示形式的字符串)赋值,但之后不能。
但是在这里你可以看到整数的显式赋值工作正常。
#include <iostream>
#include <bitset>
#include <string>
using namespace std;
int main()
{
bitset<8> b(string("101"));
cout << b.to_ullong()<<"\n";
b= 145;
cout << b<<"\n";
return 0;
}
这个问题也可能是相关的。
How to assign bitset value from a string after initializaion
Bitset 的 non-string constructors are implicit.
如果它们被声明为明确的,你确实必须写
b = bitset<8>(145);
令人困惑的是 std::bitset
并未明确定义 operator=
。但是,编译器会生成一个(请参阅 this question). You can actually check that using cppinsight。这意味着,结合接受的答案中提到的隐式构造函数,您的代码可以正常工作。您可以在 cppinsight 示例中看到构造函数调用和后续赋值。
我很想知道为什么下面的代码可以工作! 根据 bitset 模板 class,您可以通过构造函数为 bitset(int 或二进制表示形式的字符串)赋值,但之后不能。 但是在这里你可以看到整数的显式赋值工作正常。
#include <iostream>
#include <bitset>
#include <string>
using namespace std;
int main()
{
bitset<8> b(string("101"));
cout << b.to_ullong()<<"\n";
b= 145;
cout << b<<"\n";
return 0;
}
这个问题也可能是相关的。 How to assign bitset value from a string after initializaion
Bitset 的 non-string constructors are implicit.
如果它们被声明为明确的,你确实必须写
b = bitset<8>(145);
令人困惑的是 std::bitset
并未明确定义 operator=
。但是,编译器会生成一个(请参阅 this question). You can actually check that using cppinsight。这意味着,结合接受的答案中提到的隐式构造函数,您的代码可以正常工作。您可以在 cppinsight 示例中看到构造函数调用和后续赋值。