gpt4 book ai didi

c++ - 有没有办法打印对象的位表示?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:57:40 24 4
gpt4 key购买 nike

我正在使用类似下面的内容。有没有更好的办法?

for (int i = 0; i < sizeof(Person) ; i++) {
const char &cr = *((char*)personPtr + i);
cout << bitset<CHAR_BIT>(cr);
}

最佳答案

我建议在您的 Person 类中提供一个 serialize_as_binary 实用程序。

template<typename T>
void serialize_as_bin(const T &t, ostream& os) {
const unsigned char *p = reinterpret_cast<const unsigned char *>(&t);
for(size_t s = 0; s < sizeof t; ++s, ++p) serialize_as_bin(*p, os);
}

template<>
void serialize_as_bin(const unsigned char &t, ostream& os) {
// Code to serialize one byte
std::bitset<CHAR_BIT> x(t);
os << x;
}

struct Person {
A a;
B b;

ostream& serialize_as_binary(ostream& os) {
serialize_as_bin(a, os);
serialize_as_bin(b, os);
return os;
}
void deserialize_from_binary() {
// Similar stuff if required
...
}
};

Live example here

关于c++ - 有没有办法打印对象的位表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29209302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com