2013-04-17 80 views
0

我有一個程序我有使用哈希對此我不熟悉的,並沒有真正理解寫的麻煩。現在我無法計數,我閱讀,如果它是一個字母它是由一個空間,一旦該代碼使得一個字它是由兩個空格時,在讀取它分離分離字與字之間的空白。我的解碼功能工作正常,但我不知道如何計算空間。這是我嘗試過的一件事,但它不起作用,任何幫助都會很棒。摩爾斯電碼解碼器具有使用散列和計數空白C++

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

回答

0

流默認跳過空白,您可以使用flag控制空白。不過,我建議基於行的方法給你,否則,你還需要處理換行符:

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

BTW:

  • while(!in.eof())並不能保證你,你可以從流中讀取。嘗試閱讀並檢查成功。上面已經做到了。
  • 如果您提供確切的輸入和準確的預期輸出,這將有所幫助。從stringstream開始,用文件內容初始化,然後從中讀取一個元素。剝離任何不必要的東西后,請在此處提供此代碼以獲得進一步的幫助。
+0

謝謝你的建議。很大的幫助,我最終使用peek()作爲第二條語句,結果只是做我所需要的。但謝謝你的迴應。 – bwin