字符串连接,错误
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::string
或char
指针或数组)。如果那不是真的,您要么必须将非字符串转换为字符串(使用例如 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;
}
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::string
或char
指针或数组)。如果那不是真的,您要么必须将非字符串转换为字符串(使用例如 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;
}