我有一个C++程序,它根据关键字从二进制/ascii文件中读取数据,并将数据作为向量分配给每个关键字。我更喜欢用structs来存储数据并在以后使用它。问题是每个文件可能有也可能没有一些关键字,并且用所有可能的字段初始化一个全面的结构也很麻烦。我以前的研究使我了解到,没有办法初始化一个没有字段的结构,然后再添加字段。是这样吗?您是否有任何解决方案或替代数据结构建议?先谢谢你。示例代码:
std::struct s {};
std::map<std::string, std::vector<std::string>> records;
//result after reading an asci file: the records map will have
//keys as strings and values as vectors.
//What I need is to assign the individual keys and values to
//struct s
我尝试分配关键字字符串作为字段名称,但它不起作用。
以下是文件内容的一部分,供那些请求的人使用:
尺寸60 220 85 /
上衣132003657 /
dx 11220006.096
年11220003.048
dz 11220000.6086
1条答案
按热度按时间ma8fv8wu1#
在C和C中,不可能根据用户输入添加结构域。事实上,所有字段(包括名称和类型)必须在编译时已知。
在C中根据用户输入存储键值对的典型数据结构是std::map(还有其他的,比如std::unordered_map)。如果字段类型也不同,一种解决方法是为值定义自己的类,一个可以保存所有可能类型的值的类。