字符串与整数的连接

发布于 2024-11-04 10:12:51 字数 297 浏览 0 评论 0原文

DamageCost 是整数,但正如您在下面的代码中看到的,我想将它们与一个字符串连接起来(如果这是正确的单词)。我该怎么做?

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

Damage and Cost are integers, but as you can see in the code below I want to concatenate them with a string (if that's the right word). How can I do this?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

柠檬心 2024-11-11 10:12:52

为自己提供这个模板:

#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,以及即将推出的标准中的类似功能。另请注意,此函数以性能为代价换取便利性和类型安全。

Provide yourself with this template:

#include <sstream>

template <class TYPE> std::string Str( const TYPE & t ) {
    std::ostringstream os;
    os << t;
    return os.str();
}

You can then say:

return getName() + "\t" + Str( Damage ) + "\t" + Str(Cost);

Note this is pretty much equivalent to Boost's lexical_cast, and to similar facilities in the upcoming standard. Also note that this function trades performance for convenience and type-safety.

天荒地未老 2024-11-11 10:12:52

您可以使用 boost::lexical_cast< /a> 如下:

return getName()+"\t"+boost::lexical_cast<std::string>(Damage)+
  "\t"+boost::lexical_cast<std::string>(Cost);

You could use boost::lexical_cast as follows:

return getName()+"\t"+boost::lexical_cast<std::string>(Damage)+
  "\t"+boost::lexical_cast<std::string>(Cost);
赤濁 2024-11-11 10:12:52

您已经接受了@unapersson的答案,但为了记录,我会这样做...

std::string getDesc() const
{
    std::ostringstream ss;
    ss << getName() << "\t" << Damage << "\t" << Cost;
    return ss.str();
}

它只构造一个流对象,而不是为每次转换创建并丢弃它们,而且它看起来也更好一点。

(这是 C++ 方式 - 没有像其他语言那样通用的“toString”成员,通常我们使用字符串流或一次性函数,如 @unapersson 的答案。)

You've already accepted @unapersson's answer, but for the record I would do this...

std::string getDesc() const
{
    std::ostringstream ss;
    ss << getName() << "\t" << Damage << "\t" << Cost;
    return ss.str();
}

It only constructs one stream object instead of creating and throwing them away for each conversion, and it looks a bit nicer too.

(This is the C++ way - there's no general 'toString' member like other languages, generally we use string streams or a one-off function like in @unapersson's answer.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文