C++ 莫尔斯电码解码器在使用散列和计算空白C++;

C++ 莫尔斯电码解码器在使用散列和计算空白C++;,c++,C++,我有一个程序,我必须写使用哈希,我不熟悉,也不真正理解。现在我很难计算我正在阅读的单词之间的空格,如果它是一个字母,它被一个空格隔开,一旦代码生成一个单词,当它被阅读时,它被两个空格隔开。我的解码功能运行良好,但我不知道如何计算空格。这里有一件事我已经试过了,但它不起作用。任何帮助都会很好 string tmp; MORSE TABLE[20]; int j = 0, f = 0, k = 0; char x; while(!infile.eof()) { infile >>

我有一个程序,我必须写使用哈希,我不熟悉,也不真正理解。现在我很难计算我正在阅读的单词之间的空格,如果它是一个字母,它被一个空格隔开,一旦代码生成一个单词,当它被阅读时,它被两个空格隔开。我的解码功能运行良好,但我不知道如何计算空格。这里有一件事我已经试过了,但它不起作用。任何帮助都会很好

string tmp;
MORSE TABLE[20];
int j = 0, f = 0, k = 0;
char x;
while(!infile.eof())
{
    infile >> tmp;
    infile.get(x);
     if(x == ' ') //check if x is a space
     {
       infile.get(x); //read next character
       if(x == ' ') //check and see if next char is a space
        {
          TABLE[k].insert(' '); //insert space into char array for printing
        }
      }

   if(j >= f) //if true create new object
     { 
         k++; f+=100; 
     }  

    TABLE[k].decode(tmp);//pass in string to decode
    j++;
}//end while loop

任何帮助都将不胜感激。我不是一个非常先进的C++人,只是初学者。p> 流默认情况下跳过空白,您可以使用。但是,我建议您使用基于行的方法,否则您还需要处理换行:

string line;
while(getline(infile, line))
{ ...use line...  }
顺便说一句:

  • while(!in.eof())
    不能保证您可以从流中读取。试着阅读并检查是否成功。以上已经做到了这一点
  • 如果您提供准确的输入和准确的预期输出,这将有所帮助。从stringstream开始,用文件内容初始化,然后从中读取单个元素。在剥离任何不必要的内容后,在此处提供该代码以获得进一步帮助

谢谢你的建议。非常有帮助,我最后使用peek()作为第二个if语句,结果证明它正是我所需要的。但是谢谢你的回复。