【发布时间】:2014-02-01 19:36:30
【问题描述】:
我已成功按照here 发布的答案将结构(image_info_t 类型)写入文件。
我对N 数量的image_info_t 重复该过程,所有数据都被序列化并正确添加到文件中。
我现在需要读取文件,但我需要能够读取任意数量的M、image_info_t 结构以从文件中读取(全部按顺序)。上面引用的答案明确硬编码了从文件中读回的结构数量(即student_t master[3];)。但是,我需要这个数字是动态的。
我读过here “C++ 标准要求数组在声明其大小时使用整数文字或整数常量。改用<vector>”
我的问题是:我该怎么做? 如何将image_info_t 结构集从文件读回std::vector?
这是我用于从文件中读取 image_info_t 数据的当前(非工作)代码。
std::ifstream input_file(path, std::ios::binary);
const int kpts_size = kpts.size();
feature_t master[kpts_size]; //DOES NOT WORK. If I change to `feature_t master[10];` it works.
input_file.read((char*)&master, sizeof(master));
input_file.close();
注意:这不是访问冲突问题,与“可能重复”的答案无关。当你这样标记它时,人们会停止阅读我的问题,这当然对任何人都没有帮助。
【问题讨论】:
-
简单,在 StackOverflow 中搜索“c++ parse read file”。
-
为什么标记为 C?
-
因为如果我能以某种方式在 C 中做到这一点,那也很好。
-
您需要显示您的姓名的定义,例如
kpts,但让您感到困扰的是编译时常量和const限定符之间的区别。 C++11 有constexpr告诉编译器该值可以在编译期间计算,但该声明需要已应用于计算中的每个 non-literal_constant,在本例中为kpts的成员函数size(),我敢打赌它没有。 -
两者都可以。您想要哪种解决方案?