【发布时间】:2012-09-21 01:58:08
【问题描述】:
我在 C++ 中有一个类,如下所示:
class myCls
{
public:
myCls();
void setAngle(float angle);
void setArr(unsigned char arr[64]);
unsigned char arr[64];
double angle;
int index;
static float calcMean(const unsigned char arr[64]);
static float sqrt7(float x);
};
现在在我的主程序中,我有一个类的 3D 矢量:
vector<vector<vector< myCls > > > obj;
矢量的大小也是动态变化的。我的问题是如何将向量的内容存储到文件中并在之后检索它?
我尝试了很多方法都没有成功。这是我的尝试:
std::ofstream outFile;
outFile.open(fileName, ios::out);
for(int i=0;i<obj.size();i++)
{
outFile.write((const char *)(obj.data()),sizeof(vector<vector<myCls> >)*obj.size());
}
outFile.close();
为了阅读它:
vector<vector<vector<myCls>>> myObj;
id(inFile.is_open())
{
inFile.read((char*)(myObj.data()),sizeof(vector<vector<myCls> >)*obj.size());
}
我得到的只是运行时错误。
谁能帮我解决这个问题?
【问题讨论】:
-
首先你必须制定一个文件格式。然后你必须编写代码以该文件格式保存。然后您必须编写代码以读取该文件格式。你只是期待它通过魔法发挥作用。您必须准确决定文件的每个字节将包含什么,如何标记向量之间的边界,等等。 (如果您愿意,可以使用 XML 或 JSON。)您的
sizeof调用完全中断,强烈建议您不了解sizeof的作用。提示:向量本身的大小不会随着你在其中放入更多东西而改变。 -
我不确定你在问什么。你要我具体解释什么? (当我不知道您的知识和经验水平或您遇到的问题时,很难为您提供正确的信息。)它可能会帮助您将c++ serialization 打入您最喜欢的搜索引擎。
-
我有刚刚描述的对象的 3D 矢量。如何保存这个矢量并从文件中取回它。
-
正如我所说:首先你必须制定一个文件格式。然后你必须编写代码以该文件格式保存。然后您必须编写代码以读取该文件格式。你卡在第一步了吗?如果是这样,请首先为
myCls编写myCls和您的班级之间转换的toText和fromText函数(如果你想花哨的话,可能是operator<<和operator>>)。
标签: c++ file object vector save