CppBinRead.cpp
上传用户:sz0451
上传日期:2022-07-29
资源大小:256k
文件大小:2k
源码类别:

.net编程

开发平台:

Visual C++

  1. // This is the main project file for VC++ application project 
  2. // generated using an Application Wizard.
  3. #include "stdafx.h"
  4. #using <mscorlib.dll>
  5. using namespace System;
  6. using namespace System::IO;
  7. __gc class Customer
  8. {
  9.     String* name;
  10.     long accNo;
  11.     double balance;
  12. public:
  13.     // Constructors
  14.     Customer() : name(0), accNo(0), balance(0.0) {}
  15.     Customer(String* s, long l, double b) :
  16.         name(s), accNo(l), balance(b) {}
  17.     // Write object data to a BinaryWriter
  18.     void Write(BinaryWriter* bw)
  19.     {
  20.         bw->Write(name);
  21.         bw->Write(accNo);
  22.         bw->Write(balance);
  23.     }
  24.     // Read object data from a BinaryReader
  25.     void Read(BinaryReader* br)
  26.     {
  27.         name = br->ReadString();
  28.         accNo = br->ReadInt32();
  29.         balance = br->ReadDouble();
  30.     }
  31.     // Properties to retrieve the instance variables
  32.     __property String* get_Name() { return name; }
  33.     __property long get_Account() { return accNo; }
  34.     __property double get_Balance() { return balance; }
  35. };
  36. // This is the entry point for this application
  37. #ifdef _UNICODE
  38. int wmain(void)
  39. #else
  40. int main(int argc, char* argv[])
  41. #endif
  42. {
  43.     // Check for required arguments
  44.     if (argc < 2)
  45.     {
  46.         Console::WriteLine(S"Usage: CppBinRead path");
  47.         return -1;
  48.     }
  49.     String* path = new String(argv[1]);
  50.     Customer* c1 = new Customer(S"Fred Smith", 1234567, 100.0);
  51.     Customer* c2 = new Customer(S"Bill Jones", 2345678, 1000.0);
  52.     Customer* c3 = new Customer(S"Dave Davies", 3456789, 5000.0);
  53.     try
  54.     {
  55.         // Create a FileStream
  56.         FileStream* fstrm = new FileStream(path, FileMode::Create,
  57.                                            FileAccess::ReadWrite);
  58.         // Create a BinaryWriter to use the FileStream
  59.         BinaryWriter* binw = new BinaryWriter(fstrm);
  60.         c1->Write(binw);
  61.         c2->Write(binw);
  62.         c3->Write(binw);
  63.         // Create a BinaryReader that reads from the same FileStream
  64.         BinaryReader* binr = new BinaryReader(fstrm);
  65.         // Move back to the beginning
  66.         binr->BaseStream->Seek(0, SeekOrigin::Begin);
  67.         Customer* c4 = new Customer();
  68.         c4->Read(binr);
  69.         Console::WriteLine("Balance for {0} (a/c {1}) is {2}", c4->Name, 
  70.                            __box(c4->Account), __box(c4->Balance));
  71.     }
  72.     catch(System::Exception* pe)
  73.     {
  74.         Console::WriteLine(pe->ToString());
  75.     }
  76.     return 0;
  77. }