C++ 以非匹配输出c和x2B打印输出+;

C++ 以非匹配输出c和x2B打印输出+;,c++,io,output,C++,Io,Output,我正在创建一个哈夫曼树,我想打印出非匹配输出中每个字母的频率。然而,我的问题是我无法打印任何内容。这是我的过程: 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 sh

我正在创建一个哈夫曼树,我想打印出非匹配输出中每个字母的频率。然而,我的问题是我无法打印任何内容。这是我的过程:

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
    }
  }
charc;
无符号整数频率数组[256];
无符号整数值移位[256];
而(!cin.eof())
{
c=cin.get();
freqArray[(int)c]+%;
}//将我的频率数组映射到它看到的字母
无效移位(无符号整数*频率数组,无符号整数*值移位)
{
对于(int i=0;i<256;i++)
{
if(freqArray[i]>0)
{
valueShifted[i]=(freqArray[i]8)&0x0000ff00)|(freqArray[i]>>24);//位移位
}
}
移位(频率数组、值移位);
对于(int i=0;i<256;i++)
{
如果(值移位[i]>0)
{
cout.write((char*)&valueshift[i],sizeof(valueshift[i]);//这不是打印任何内容
}
}

有人知道为什么不打印任何内容吗?我猜我的错误可能是因为我没有用十六进制打印出来,但我不完全确定…如果有人能帮忙,那就太好了!谢谢!

你想在数组中输出每个
无符号int

cout << valueShifted[i];

cout是否要输出数组中的每个
无符号int

cout << valueShifted[i];

cout您尝试执行的操作不太合理……但它应该向控制台写入一些内容,您可能只是看不到它(即无法打印的字符和/或没有刷新)。您缺少cout.flush();您试图执行的操作不太合理……但它应该向控制台写入一些内容,但您可能看不到它(即无法打印的字符和/或没有刷新)。您缺少cout.flush();