0

str.append(ch);以下のコードの行で abpve エラーが発生しています。

char私は基本的に各「ch」にstrを追加したいと考えています。

誰かが問題を知っている場合は、私のエラーを修正してください。

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;
        }



    }
4

3 に答える 3

1

文字の「シーケンス」のみを文字列に追加できます。「追加」は、オブジェクトのような 2 つの (シーケンス) ベクトル (より一般的な意味で単語ベクトルを取る) に対する操作です。

次のことができます。

  1. str.append(1, ch);
  2. str+=ch;
于 2012-07-25T18:42:41.577 に答える
1

コンパイラが言うように、シグネチャを持つメンバー関数はありません

str.append(ch);

どちらでも使用できます

str.append(1, ch);

またはより単純な

str.push_back(ch);
于 2012-07-25T18:44:32.137 に答える
1

string::appendcharには、引数としてを受け取るメンバー関数はありません。null で終わるchar配列またはその他のstringS.

于 2012-07-25T18:38:38.660 に答える