c++获取结构体整体的数据类型和长度并存储到容器中
时间: 2024-01-16 08:03:53 浏览: 271
在C++中,可以使用`sizeof`运算符获取结构体的长度,并使用`typeid`运算符获取结构体的数据类型信息。可以将这些信息存储到容器中,例如:
```c++
#include <iostream>
#include <vector>
#include <typeinfo> // 包含typeid运算符
using namespace std;
struct Person {
char name[20];
int age;
};
int main() {
vector<pair<size_t, const type_info*>> infoVec;
// 存储Person结构体的长度和类型信息
infoVec.push_back(make_pair(sizeof(Person), &typeid(Person)));
// 输出容器中存储的信息
for (const auto& info : infoVec) {
cout << "Size: " << info.first << ", Type: " << info.second->name() << endl;
}
return 0;
}
```
在上述示例中,使用`vector`容器存储了`Person`结构体的长度和类型信息。其中,`make_pair`函数用于创建一个`std::pair`类型的对象,存储了结构体的长度和类型信息;`typeid`运算符用于获取结构体的类型信息,返回一个`const std::type_info&`类型的引用。最后,使用`auto`关键字和范围`for`循环遍历容器中存储的信息,并输出到控制台。
需要注意的是,`sizeof`运算符返回的是结构体的大小,而不是结构体的长度。结构体的大小包括了所有成员变量的大小,以及可能存在的填充字节。如果需要获取结构体的长度,可以将结构体的大小除以1字节的大小(即`sizeof(char)`)。
阅读全文