【发布时间】:2011-01-19 13:23:08
【问题描述】:
我已经编写了大量的 operator<<(std::ostream &, const T &) 函数——它们非常有用。
我从未在实际代码中编写过operator>>(std::istream &, T &) 函数,甚至从未将提取运算符用于内置类型(好吧,也许是std::string)。这些仅适用于简短的示例程序和教科书吗? operator>> 是 C++ 的失败特性吗?
有人询问了有关safely overloading stream operators 的问题。我想知道是否有人在实践中这样做。
即使对于像reading input from a file in C++ 这样简单的东西,我也不建议使用operator>>。编写能够检测和处理输入错误的健壮代码太难了(或者我不知道如何)。
如果您不同意,请举一个使用operator>> 的好例子——也许可以回答我链接到的最后一个问题。
总结:感谢大家的回复,很多好的意见。曼努埃尔的回答让我重新考虑我不愿意使用
op>>,所以我接受了那个。
【问题讨论】:
-
如果支持
lexical_cast,需要定义op>>。 (boost.org/doc/libs/1_42_0/libs/conversion/lexical_cast.htm)。
标签: c++ iostream formatted-input