字符串连接,错误

String concatenation, error

Container.cc: In member function ‘std::string Container::tostring()’: Container.cc:125:27: error: invalid operands of types ‘const char*’ and ‘const char [2]’ to binary ‘operator+’ cadena= "("+ this->id+ ","+this->weight +","+ this->price+")";

如何解决这个错误,是 c++

这是代码:

string Container::tostring()
    {
        cadena= "("+ this->id+ ","+this->weight +","+ this->price+")";

        return cadena;
    }

这是因为您没有开始 std::string 对象。

更改为例如

cadena = std::string("(") + this->id + ...

上面的答案假定所有涉及的变量都是字符串std::stringchar指针或数组)。如果那不是真的,您要么必须将非字符串转换为字符串(使用例如 std::to_string) or by using a std::ostringstream 并从该流中提取字符串。

你至少应该这样写

string Container::tostring()
    {
        cadena= "("+ std::to_string( this->id ) + "," + std::to_string( this->weight ) + "," +  std::to_string( this->price ) + ")";

        return cadena;
    }

另一种方式如下

#include <sstream>

//...

string Container::tostring()
    {
        std::ostringstream os;

        os << "(" << this->id << "," << this->weight << "," << this->price << ")";
        cadena = os.str();

        return cadena;
    }