我在C ++ VS2010中有一个应用程序。
我有一个整数向量
0 = 93823
1 = 987283
2 = 3183723
3 = 8892328
4 = 98382391
等...
有没有办法快速将此向量序列化/反序列化为一个文件(反序列化为跨平台),而无需单独编写每个值?
感谢您的帮助。
编辑:
我正在发布一些代码,我当前是如何序列化和反序列化我的向量的。 我觉得我的方式非常低效。
void CCompiler::CompileVector(FILE *outfile)
{
int iSize = nMap.Content().size();
fwrite(&iSize,sizeof(int),1,outfile);
for (int i=0;i<nMap.Content().size();i++)
{
fwrite( &nMap.Content()[i], sizeof(int), 1, outfile);
}
}
void CBinLoader::LoadVector(clsMapping &uMapping)
{
int iSizeMap = 0;
fread(&iSizeMap,sizeof(int),1,m_infile);
for(int i = 0; i < iSizeMap; i++)
{
int iByteStart=0;
fread(&iByteStart,sizeof(int),1,m_infile);
uMapping.Add(iByteStart);
}
}
PS: 在我的班级clsMapping中有一些空洞。 但是,“内容”只是一个向量。
答案 0 :(得分:1)
不确定你或previous question中的“匆忙”是什么意思。
然而,由于它的文本,这次不是二进制,这应该有效:
vector<int> values;
fstream file("filename");
copy(istream_iterator<int>(file),
istream_iterator<int>(),
back_inserter(values));