字符串连接与整数

时间:2011-04-30 18:48:12

标签: c++ string integer concatenation

DamageCost是整数,但正如您在下面的代码中看到的,我想用字符串连接它们(如果这是正确的单词)。我怎样才能做到这一点?

class Weapon : Shopable{
    private:
        int Damage;
    public:
        std::string getDesc() const{
            return getName()+"\t"+Damage+"\t"+Cost;
        }
};

3 个答案:

答案 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答案中的一次性函数。)