0

我有一个程序我必须使用我不熟悉且不太了解的散列来编写。现在我无法计算我正在阅读的单词之间的空格,如果它是一个字母,它被一个空格分隔,一旦代码生成一个单词,它在被读入时被两个空格分隔。我的解码功能工作正常,但我不知道如何计算空间。这是我尝试过的一件事,但它不起作用,任何帮助都会很棒。

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++ 人,只是一个新手。

4

1 回答 1

0

默认情况下,流会跳过空格,您可以使用flag来控制它。但是,我建议您使用基于行的方法,否则您还需要处理换行符:

string line;
while(getline(infile, line))
{ ...use line...  }

顺便提一句:

  • while(!in.eof())不保证您可以从流中读取。尝试阅读并检查是否成功。上面已经做到了。
  • 如果您提供准确的输入和准确的预期输出,将会有所帮助。从字符串流开始,使用文件内容进行初始化,然后从中读取单个元素。在剥离任何不必要的内容后,在此处提供该代码以获得进一步的帮助。
于 2013-04-17T05:11:04.400 回答