当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:56:00  来源:本站整理

实例解析C++/CLI的串行化[VC/C++编程]

赞助商链接



  本文“实例解析C++/CLI的串行化[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

串行化可以使对象被转换为某种外部的情势,比方以文件存储的情势供程序利用,或通历程序间的通讯发送到另一个处理历程.转换为外部情势的历程称为"串行化",而逆历程称为"反串行化".

简介

请看例1中的示例,其将多个对象范例的值写入到一个新的磁盘文件中,关闭文件,接着再把这些值重新读取到内存中.

例1:

using namespace System;
using namespace System::IO;
using namespace System::Runtime::Serialization::Formatters::Binary;
int main()
{
  array<int>^ intArray = {10, 20, 30};
  array<float,2>^ floatArray = {
   {1.2F, 2.4F},
   {3.5F, 6.8F},
   {8.4F, 9.7F}
  };
  DateTime dt = DateTime::Now;
  Console::WriteLine("dt >{0}<", dt);
  /*1*/ BinaryFormatter^ formatter = gcnew BinaryFormatter;
  //将数据串行化到一个文件
  /*2*/ Stream^ file = File::Open("Sr01.ser", FileMode::Create);
  /*3a*/ formatter->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->Serialize(file, 1.23456F);
  /*4*/ file->Close();
  //从文件中反串行化数据--即读取数据
  /*5*/ file = File::Open("Sr01.ser", FileMode::Open);
  /*6a*/ String^ s = static_cast<String^>(formatter->Deserialize(file));
  Console::WriteLine("String >{0}<", s);
  /*6b*/ array<int>^ newIntArray =
  static_cast<array<int>^>(formatter->Deserialize(file));
  Console::WriteLine("newIntArray:");
  for (int i = 0; i < newIntArray->Length; ++i)
  {
   Console::Write(" {0}", newIntArray[i]);
  }
  Console::WriteLine();
  /*6c*/ array<float,2>^ newFloatArray =
  static_cast<array<float,2>^>(formatter->Deserialize(file));
  Console::WriteLine("newFloatArray:");
  for (int i = 0; i < 3; ++i)
  {
   for (int j = 0; j < 2; ++j)
   {
    Console::Write(" {0}", newFloatArray[i,j]);
   }
   Console::WriteLine();
  }
  /*6d*/ bool b = static_cast<bool>(formatter->Deserialize(file));
  Console::WriteLine("bool >{0}<", b);
  /*6e*/ DateTime newDT = static_cast<DateTime>(formatter->Deserialize(file));
  Console::WriteLine("newDT >{0}<", newDT);
  /*6f*/ int v = static_cast<int>(formatter->Deserialize(file));
  Console::WriteLine("int >{0}<", v);
  /*6g*/ wchar_t c = static_cast<wchar_t>(formatter->Deserialize(file));
  Console::WriteLine("wchar_t >{0}<", c);
  /*6h*/ float f = static_cast<float>(formatter->Deserialize(file));
  Console::WriteLine("float >{0}<", f);
  /*7*/ file->Close();
}


  以上是“实例解析C++/CLI的串行化[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • Windows 7远程帮忙利用实例解析
  • Java程序最简单犯的21种错误实例解析
  • 基于J2EE的电子商务网站实例解析
  • 实例解析C++/CLI的串行化
  • 实例解析C++/CLI的"克隆"
  • 实例解析C++/CLI线程之多任务
  • 实例解析C++/CLI线程之线程状况长期性
  • <b>实例解析C++/CLI之开卷有益</b>
  • <b>实例解析C++/CLI之值范例</b>
  • <b>实例解析C++/CLI之代理与事件</b>
  • 实例解析C++/CLI之静态构造函数
  • 实例解析C++/CLI中的担当与列举
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .