0

私はハフマンの木を作っていて、私の作品は完成しました。しかし、char を読み取るときに問題が発生しました。最初の部分でスペース " " の代わりにゼロが読み取られます。

これがコードです。decodeファイル処理中に関数内でエラーが発生し ます。

void huffmantree<h>::decode(){
    CString *st;
hscll<h> * temp=new hscll<h> ();
int h;
    ifstream myfile;
  myfile.open ("z://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaae.txt");
  myfile >>h;
  cout<<h;

  for(int i=0;i<h;i++)
  {char  temp9[100];
  char l;

  myfile >>l; 
  temp->insert(l);
     // myfile >> l ;

      myfile >> temp9;
      temp->atindex(i)->symboc.symbol=l;
      temp->atindex(i)->code->setString(temp9);
      //myfile >> '\n';
  }
  _getch();

    //CString u;
    //char k;
    //int p=0;
    //for(int i=0;i<st->m_length;i++)
    //{
    //  for(int j=0;j<8;j++)
    //  {
    //      
    //      char a;
    //      a=st->charAt(i);
    //      int temp=1;
    //      if(j==0)
    //          temp=1;
    //      if(a!='0')
    //      {
    //          for(int y=0;y<j;y++)
    //              {
    //                      temp*=2;
    //              }
    //          p+=temp;
    //      }
    //      else 
    //      {
    //      p+=0;
    //      
    //      }

    //      i++;
    //      cout<<a;
    //  }
    //  k=p;
    //  char t=7;
    //  //cout<<"      "<<t<<"    "<<p<<endl;
    //  myfile << k;
    //  p=0;
    //  u.addcharbychar(k);
    //}
    ////cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<u.getString();
    ////cout<<endl<<endl<<endl<<"the length is =="<<u.m_length<<endl;
  myfile.close();
}
4

1 に答える 1

2

入力に使用する>>と、先頭の空白はスキップされます。バイナリ データを読み取る場合は、ファイルをバイナリ モード ( myfile.open( name, std::ios::in | std::ios::binary) で開き、 などの非フォーマット入力関数を使用する必要がありますistream::get()。(そして、書くときは、バイナリも書く必要があります。)

于 2012-06-20T11:06:56.370 に答える