gpt4 book ai didi

c++ - Stringstream - 将对象转换为字符串

转载 作者:搜寻专家 更新时间:2023-10-31 01:14:48 26 4
gpt4 key购买 nike

我有一个复杂的对象,我希望能够将其传递到 std::ostringstream 中与 <<运算符就像一个字符串或 int。我想给 ostringstream 对象的唯一 id (int) 和/或名称 (string)。是否有我可以在我的类中实现的运算符或方法来允许它工作?

最佳答案

在与您的类相同的命名空间中定义一个运算符重载:

template<typename charT, typename traits>
std::basic_ostream<charT, traits> &
operator<< (std::basic_ostream<charT, traits> &lhs, Your_class const &rhs) {
return lhs << rhs.id() << ' ' << rhs.name();
}

如果输出函数需要访问类的私有(private)成员,那么您可以将其定义为友元函数:

class Your_class {
int id;
string name;

template<typename charT, typename traits>
friend std::basic_ostream<charT, traits> &
operator<< (std::basic_ostream<charT, traits> &lhs, Your_class const &rhs) {
return lhs << rhs.id << ' ' << rhs.name;
}
};

请注意,这不会产生成员函数,它只是一次声明和定义友元函数的便捷方式。

关于c++ - Stringstream - 将对象转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10905601/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com