求大哥哥告诉一下,ofstream二进制读写vector 问题

zuchuiying9466 2017-10-23 11:40:19
ofstream二进制读写vector 结构的时候 可以按照自己的文本类容格式读写吗?
...全文
621 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuchuiying9466 2017-10-23
  • 打赏
  • 举报
回复
引用 1 楼 VisualEleven 的回复:
你怎么写的就怎么读,二进制方式写的就二进制方式读,要一致
我用二进制保存数据的时候没有 分割符,看起来很不方便,然后在保存的时候中间添加了分隔符,读取的时候会有影响吗?
zuchuiying9466 2017-10-23
  • 打赏
  • 举报
回复
我用二进制保存数据的时候没有 分割符,看起来很不方便,然后在保存的时候中间添加了分隔符,读取的时候会有影响吗?
Eleven 2017-10-23
  • 打赏
  • 举报
回复
你怎么写的就怎么读,二进制方式写的就二进制方式读,要一致
Eleven 2017-10-23
  • 打赏
  • 举报
回复
引用 3 楼 zuchuiying9466的回复:
[quote=引用 1 楼 VisualEleven 的回复:] 你怎么写的就怎么读,二进制方式写的就二进制方式读,要一致
我用二进制保存数据的时候没有 分割符,看起来很不方便,然后在保存的时候中间添加了分隔符,读取的时候会有影响吗?[/quote] 会有影响,怎么保存的就怎么解析
smwhotjay 2017-10-23
  • 打赏
  • 举报
回复
来个我写的容器序列化类。 http://blog.csdn.net/smwhotjay/article/details/78319172

#include <vector>

 


/************************************************************************/
/* 

 一个io模版.来实现对结构体等对象的存储和加载


 struct stCityInfo 
 {
	 char cityName[255];
	 POINT A; 
	 POINT B; 
 };

 IOPack<stCityInfo> io; 

 int _tmain(int argc, _TCHAR* argv[])
 {
	 io.LoadFromFile("city.dat");

	 stCityInfo info;
	 strcpy(info.cityName,"武汉");
	 info.A.x=111;
	 info.A.y=222;
	 info.B.x=333;
	 info.B.y=444;

	 printf("%d \n",io.m_List.size());

 }

  simawei@qq.com  2012

*/
/************************************************************************/

template<typename T>
class IOPack
{
public:
	IOPack(void){

	}
	~IOPack(void){

	}
 
	bool LoadFromFile(const char* filename)
	{
		printf("InitFromFile [%s]\n",filename);

		FILE* f=fopen(filename,"rb");
		if (NULL==f)
		{
			printf("[line:%d][%s] open err\n",__LINE__,__FUNCTION__);
			return false;
		}

		int totalsize = GetFileSize(filename);
		if (totalsize==-1)
		{
			return false;
		}

		int readoffset=0;
		while(readoffset<totalsize)
		{
			T p;

			fread(&p,sizeof(T),1,f);

			readoffset+=sizeof(T);

			m_List.push_back(p);
 
		}

		fclose(f);

		printf("[line:%d][%s]  OK \n",__LINE__,__FUNCTION__);
		return true;
	}

	bool  SaveToFile(const char* filename)
	{
		FILE* f=fopen(filename,"ab+");
		if (NULL==f)
		{
			printf("open err\n");
			return false;
		}


		for(int i=0;i<m_List.size();i++){
			fwrite(&m_List[i],sizeof(T),1,f);
		}

		fclose(f);

		return true;
	}

 
	std::vector<T> m_List;

private:

	long GetFileSize(const  char* filename )
	{
		FILE* fp = fopen( filename, "r" );
		if (fp==NULL) return -1;
		fseek( fp, 0L, SEEK_END );
		int s=ftell(fp);
		fclose(fp);
		return  s; 
	}

}; 
schlafenhamster 2017-10-23
  • 打赏
  • 举报
回复
vector 里 element 一个一个 读写,应该 没问题

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧