无法将参数 1 从"char"转换为"const std::basic_string<_Elem,_Traits,_Ax> &"

cannot convert parameter 1 from 'char' to 'const std::basic_string<_Elem,_Traits,_Ax> &'

本文关键字:string Traits gt lt basic Ax Elem std 参数 char const      更新时间:2023-10-16

我在以下代码的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;
        }

    }

正如编译器所说,没有具有签名的成员函数

str.append(ch);

你可以使用

str.append(1, ch);

或者更简单的

str.push_back(ch);

字符串::append没有以char为参数的成员函数。您可以附加以null结尾的char数组或其他stringS

您只能将字符的"序列"附加到字符串中。"append"是对两个(序列)向量(在更通用的意义上取单词vector)类似对象的操作。

您可以执行以下操作:

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