2011-04-15 81 views
0

在C++中可以根据文件内容创建结构类型吗?是否可以根据文件内容创建结构类型?

 
STRUCT_NAME 
int var1; 
int var2; 
string v3; 
STRUCT NAME *pointer; 

第一行是该结构的名称,其他行会的变量

+0

想你需要更清楚一点 - 你问是否可以在程序运行时读取文本文件,并根据该文件的内容创建结构? – Elemental 2011-04-15 08:54:18

+0

问题是,你想在运行时还是在编译时执行此操作? – 2011-04-15 08:55:00

+0

您的意思是说,在运行时您想读取描述结构的文本文件,然后以某种方式在内存中创建该结构? – GrahamS 2011-04-15 08:55:26

回答

0

无论@lindydancer @iammilind @james在说什么都是正确的。你不能一次性完成。你可能会得到解决方法(虽然这不是专业方法),如下所示:
1.首先阅读定义结构的文件并创建新文件(Cpp和h文件)。 2.现在编译新文件并提供新的exe文件给你的用户,你可以在后台执行这个过程,这样对于用户来说它的所有动态..(但是有人必须做这个工作...)

2

如果从文件中读取,并试图建立这个struct

- >如果在相同的程序中,即运行时然后;因为你不能编译出目前执行

的源代码 - >一些不同的源代码,这是尚未被编译并且您正在使用的文件操作操作,然后

+1

我不明白这个答案。谨慎阐述? – 2011-04-15 08:57:23

+0

同意。我修改了答案。谢谢。 – iammilind 2011-04-15 09:03:06

2

你的意思是在飞,当你的应用程序正在运行?不,你不能那样做,所有类型必须在编译时才知道。当然,你总是可以创建一些可以在运行时动态配置的容器对象,但这是一个更先进的系统。另一方面,如果你的意思是在构建应用程序时这样做了一次,那么你可以编写一个简单的工具来吃掉你的文本文件并发出一个C++头文件,以后在编译时可以使用它。

+0

我想在运行时这样做,bcuz我想让我的用户定义他们自己的'struct'。 – Abel 2011-04-15 09:09:15

+0

您可以选择使用低技术解决方案,在该解决方案中您分配与用户结构相对应的字节数,而是使用数据库存储数据的高科技解决方案。无论如何,这是一项不重要的任务,并且要完全描述它,您确实需要了解1)您正在尝试处理的问题,2)C++编程语言,3)解析技术。更何况,你将不得不定义你自己的结构描述语言。祝你好运,你将需要它... – Lindydancer 2011-04-15 09:23:54

1

不可以。您可以最近的是std::map<std::string, boost::any>(或者如果您可以限制这组类型,则为boost::variant)。

+0

这些类型将只是“int”和“字符串”,结构将在运行时创建。感谢你的回答 – Abel 2011-04-15 09:03:48

相关问题