2012-07-25 410 views
0

我在下面的代碼中獲得了第str.append(ch);行的abpve錯誤。無法將參數1從'char'轉換爲'const std :: basic_string <_Elem,_Traits,_Ax>&'

我基本上想要追加每個char'ch'。

如果有人知道這個問題,請糾正我的錯誤。

int extract(unsigned char data, char i); // Signature of extract function 


void decoded(istream& input,ostream& output) 
    { 
     int cnt; 
     int x; 

     input.read((char*)&x,sizeof(x)); 


     cout<<x; 
     cnt=x; 
     string str; 
     char ch; 
     for (; ;) 
     { 
      char c; 

      input.read((char*)&c,sizeof(char)); 

      if (input) 
      { 
       //read_bit(c,output); 
       for (int i=7; i>=0; i--) 
       {  
        if(cnt) 
         { 
         cnt--; 
         ch=(char)(((int)'0')+extract(c, i)); 

         str.append(ch);// I am getting error at this line. 

         if(huffmanFindTable[str]) 
         { 
          output.write((char*)&(huffmanFindTable[str]),sizeof(char)); 
          str.clear(); 
         } 
         else 
         { 
         } 

        } 
       } 
      } 
      else 
      break; 
     } 



    } 

回答

1

像編譯器說,沒有與簽名沒有成員函數

str.append(ch); 

您可以使用

str.append(1, ch); 

或簡單

str.push_back(ch); 
+0

第一個選項給錯誤「腐敗的堆棧周圍」,第三個選項爲我工作。 – Rajul 2012-07-28 12:53:37

1

string::append沒有成員函數採取char作爲參數。您可以添加以空字符結尾的陣列或其他stringS

+0

現在我已經轉換'char ch'到'string ch',它解決了我的問題。上述轉換是否有任何傷害? – Rajul 2012-07-25 18:45:46

1

只能將字符的「序列」附加到字符串中。 「追加」是兩個(序列)向量(更一般意義上的向量)的操作,就像對象一樣。

你可以做到以下幾點:

  1. str.append(1,CH);
  2. str + = ch;