解析C++/CLI的串行化 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    串行化可使对象被转换为某种外部的形式,比如以文件存储的形式供程序使用,或通过程序间的通讯发送到另一个处理过程,

解析C++/CLI的串行化

。转换为外部形式的过程称为"串行化",而逆过程称为"反串行化"。

    简介

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

    例1:

    using namespace System;

    using namespace System::IO;

    using namespace System::Runtime::Serialization::Formatters::Binary;

    int main()

    {

    array^ intArray = {10, 20, 30};

    array^ 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(formatter->Deserialize(file));

    Console::WriteLine("String >{0}<", s);

    /*6b*/ array^ newIntArray =

    static_cast^>(formatter->Deserialize(file));

    Console::WriteLine("newIntArray:");

    for (int i = 0; i < newIntArray->Length; ++i)

    {

    Console::Write(" {0}", newIntArray[i]);

    }

    Console::WriteLine();

    /*6c*/ array^ newFloatArray =

    static_cast^>(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(formatter->Deserialize(file));

    Console::WriteLine("bool >{0}<", b);

    /*6e*/ DateTime newDT = static_cast(formatter->Deserialize(file));

最新文章