Damage
和Cost
是整数,但正如您在下面的代码中看到的,我想用字符串连接它们(如果这是正确的单词)。我怎样才能做到这一点?
class Weapon : Shopable{
private:
int Damage;
public:
std::string getDesc() const{
return getName()+"\t"+Damage+"\t"+Cost;
}
};
答案 0 :(得分:7)
为自己提供此模板:
#include <sstream>
template <class TYPE> std::string Str( const TYPE & t ) {
std::ostringstream os;
os << t;
return os.str();
}
然后你可以说:
return getName() + "\t" + Str( Damage ) + "\t" + Str(Cost);
请注意,这几乎等同于Boost的lexical_cast
,以及即将推出的标准中的类似设施。另请注意,此功能为了方便和类型安全而交易性能。
答案 1 :(得分:2)
您可以按如下方式使用boost::lexical_cast
:
return getName()+"\t"+boost::lexical_cast<std::string>(Damage)+
"\t"+boost::lexical_cast<std::string>(Cost);
答案 2 :(得分:2)
你已经接受了@ unapersson的答案,但是为了记录,我会这样做......
std::string getDesc() const
{
std::ostringstream ss;
ss << getName() << "\t" << Damage << "\t" << Cost;
return ss.str();
}
它只构造一个流对象而不是为每次转换创建和抛弃它们,它看起来也更好。
(这是C ++方式 - 没有像其他语言一样的'toString'成员,通常我们使用字符串流或@ unapersson答案中的一次性函数。)