0

私はハフマン ツリーを作成している途中で、フォーマットされていない出力で各文字の頻度を出力したいと考えています。ただし、私の問題は、何も印刷できないことです。これは私のプロセスです:

char c;
unsigned int freqArray[256];
unsigned int valueShifted[256];

while (!cin.eof())
{
  c = cin.get();
  freqArray[(int)c]++;
} //mapping my frequency array to the letter it sees


void shifting(unsigned int *freqArray, unsigned int *valueShifted)
{
  for(int i = 0; i < 256; i++)
  {
    if(freqArray[i] > 0)
    {
      valueShifted[i] = (freqArray[i] << 24) | ((freqArray[i] << 8) & 0x00ff0000) | ((freqArray[i] >> 8) & 0x0000ff00) | (freqArray[i] >> 24); // shifting of bits
    }
  }


  shifting(freqArray, valueShifted);
  for(int i = 0; i < 256; i++)
  {
    if(valueShifted[i] > 0)
    {
      cout.write((char*)&valueShifted[i], sizeof(valueShifted[i])); //this is not printing anything
    }
  }

これが何も印刷されない理由を誰かが知っているでしょうか?私のエラーは、HEXで印刷していないことが原因である可能性があると推測していますが、完全にはわかりません...誰かがそれを助けることができれば、それは素晴らしいことです! ありがとう!

4

1 に答える 1

3

unsigned intそれぞれを配列に出力したいですか?

cout << valueShifted[i];

これwriteは低レベルの書き込みです。あなたの例では、バイナリエディタを使用して、書いている値を確認する必要があります。端末とデータの内容によっては、バイナリ データを stdout にダンプすると、ガベージが出力されるか、何も出力されない可能性があります。

于 2012-11-30T21:03:40.553 に答える