动态定义结构体(高分求解,还会追加分数)

来源:百度知道 编辑:UC知道 时间:2024/05/28 03:09:23
比如我在文本文件里,写下三行
int a
int b
int c
这相当于配置文件(成员数和类型会变),在程序启动后,我去读这个文本文件,读完以后,在程序里定义出下面这个结构体,这个如何实现?

struct stA
{
int a;
int b;
int c;
}

用一个结构形式的应该是不行的, 你应该使用一些动态的数据. 首先类型得是动态的, 你可以看一下 boost 库中的 any 类型, 你可以把任何类型的值赋值给它, 而且它还保证类型安全:
boost::any myany;
myany = 1; // int ok
myany = "hello"; // const c string ok
myany = 2.3; // double ok

然后, 你应该使用一个动态的数据结构来保存 any, 可以使用标准库中的一些容器, 如:
std::vector<boost::any> va;
std::list<boost::any> la;

这样, 当你成功分析出一个数据后, 如 int i = 1, 你可以这么做:
va.push_back(i);
或者:
la.push_back(i);
希望对你有点用! 呵呵!

自己写个函数,根据情况,完成初始化吧

另外,你可以看一下“零长数组”的相关知识,或许有点帮助的