6.フィールド(フィールド)

8237 ワード

1.ストリームファイル

  • 情報をバイトストリーム
  • としてマークする.
  • フィールドは、ファイル内の情報が最も少ないユニット
  • である.
    ex) Mary, Ames, 123, Maple .. 場です.
  • In C:
  • struct Person
    {
    	char last[11];
        char first[11];
        char address[16];
        char city[16];
        char state[3];
        char zip[10];
    }
  • In C++ :
  • 
    class Person
    {
       public : 
        	char last[11];
       	char first[11];
            char address[16];
            char city[16];
       	char state[3];
        	char zip[10];
    }

    ❗❗ 2. フィールド構造


    フィールドのメンテナンス方法


    方法1:固定長フィールド

  • に必要な最大ファイル割り当て/ファイルサイズがより大きく、無駄がより大きい
  • フィールドの長さに似ている場合に便利です
  • ⭕方法2:長さインジケータ(length indicator)

  • フィールドの前にフィールドの長さを保存する
  • 長さベースのフィールド
  • ⭕メソッド3:区切り記号(区切り記号)

  • 区切り記号でフィールド
  • を識別する
  • 区切り:フィールドに含まれない特殊文字(|:vetical bar,:shift)
  • ⭕メソッド4:キーワード(キーワード)

  • 独自のテクノロジアーキテクチャ:
  • プロファイルの支援
  • 区切り記号と組み合わせて
  • を使用
  • のスペースの無駄があります.
  • 比較


    最も簡単で最も速い方法:方法1:固定長フィールドスペースの無駄を少なくする方法で広く使われている方法:⭕方法3:区切り記号(区切り記号)

    3.フィールドのフロー解読


    ⭕メソッド3:区切り記号(区切り記号)


  • base
  • 
    class Person
    {
       public : 
        	char last[11];
       	char first[11];
            char address[16];
            char city[16];
       	char state[3];
        	char zip[10];
    }
    解読
  • // 파일로부터 구분자 '|'로 구분된 필드를 판독
    istream & operation >> ( istream & stream, Person &p)
    {
        char delim;
        stream.getline(p.LastName,30,'|');
        if(strlen(p.LastName) == 0 ) return stream;
        stream.getline(p.FirstName,30,'|');
        stream.getline(p.Address,30,'|');
        stream.getline(p.City,30,'|');
        stream.getline(p.State,15,'|');
        stream.getline(p.ZipCode,10,'|');
        return stream;
     }