首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >超载setw( )?

超载setw( )?
EN

Stack Overflow用户
提问于 2014-09-08 20:05:49
回答 1查看 526关注 0票数 0

我想要一个setw取两个参数并返回最大的参数。这个是可能的吗?我该怎么做呢?不寻找代码只是一些方向就可以了,因为我在网上找不到明确的答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-08 20:08:28

我不认为您可以重载它,但是您当然可以用不同的名称定义您自己的类型,然后为它定义<<>>运算符。例如:

代码语言:javascript
复制
struct setw_largest
{
    int _value;
    setw_largest(int value1, int value2) : _value(std::max(value1, value2)) {}
};

template<class _Elem, class _Traits, class _Arg>
inline basic_istream<_Elem, _Traits>& operator>>(basic_istream<_Elem, _Traits>& _Istr, const setw_largest& _Manip)
{
    _Istr.width(_Manip._value);
    return _Istr;
}

template<class _Elem, class _Traits, class _Arg>
inline basic_ostream<_Elem, _Traits>& operator<<(basic_ostream<_Elem, _Traits>& _Ostr, const setw_largest& _Manip)
{
    _Ostr.width(_Manip._value);
    return _Ostr;
}

代码语言:javascript
复制
std::cin >> setw_largest(1, 2) >> ...;
std::cout << setw_largest(1, 2) << ...;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25732305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档