资源描述:
《实例解析c++、cli的串行化》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实例解析C++/CLI的串行化- 串行化可使对象被转换为某种外部的形式,比如以文件存储的形式供程序使用,或通过程序间的通讯发送到另一个处理过程。转换为外部形式的过程称为"串行化",而逆过程称为"反串行化"。 简介 请看例1中的示例,其将多个对象类型的值写入到一个新的磁盘文件中,关闭文件,接着再把这些值重新读取到内存中。 例1:usingnamespaceSystem;usingnamespaceSystem::IO;usingnamespaceSystem::Runtime::Serialization::Formatters::Binary;intmain(){ arra
2、y^intArray={10,20,30}; array^floatArray={ {1.2F,2.4F}, {3.5F,6.8F}, {8.4F,9.7F} }; DateTimedt=DateTime::Now; Console::WriteLine("dt>{0}<",dt); /*1*/BinaryFormatter^formatter=gcnewBinaryFormatter; //将数据串行化到一个文件 /*2*/Stream^file=File::Open("Sr01.ser",FileMode::Create); /*3a*/forma
3、tter->Serialize(file,"Hello"); /*3b*/formatter->Serialize(file,intArray); /*3c*/formatter->Serialize(file,floatArray); /*3d*/formatter->Serialize(file,true); /*3e*/formatter->Serialize(file,dt); /*3f*/formatter->Serialize(file,1000); /*3g*/formatter->Serialize(file,L''X''); /*3h*/formatter->Seri
4、alize(file,1.23456F); /*4*/file->Close(); //从文件中反串行化数据--即读取数据 /*5*/file=File::Open("Sr01.ser",FileMode::Open); /*6a*/String^s=static_cast(formatter->Deserialize(file)); Console::WriteLine("String>{0}<",s); /*6b*/array^newIntArray= static_cast^>(formatter->Deserialize(fil
5、e)); Console::WriteLine("newIntArray:"); for(inti=0;iLength;++i) { Console::Write("{0}",newIntArray[i]); } Console::WriteLine(); /*6c*/array^newFloatArray= static_cast^>(formatter->Deserialize(file)); Console::WriteLine("newFloatArray:"); for(inti=0;i<3;++i
6、) { for(intj=0;j<2;++j) { Console::Write("{0}",newFloatArray[i,j]); } Console::WriteLine(); } /*6d*/boolb=static_cast(formatter->Deserialize(file)); Console::WriteLine("bool>{0}<",b); /*6e*/DateTimenewDT=static_cast(formatter->Deserialize(file)); Console::WriteLine("newDT>{
7、0}<",newDT); /*6f*/intv=static_cast(formatter->Deserialize(file)); Console::WriteLine("int>{0}<",v); /*6g*/wchar_tc=static_cast(formatter->Deserialize(file)); Console::WriteLine("wchar_t>{0}<",c); /*6h*/floatf=