[英]Reading custom coordinate class from istream
我有一个自定义的Coordinate类,并且想为其重载operator >>。 我不确定执行此操作的正确方法是什么。
坐标的有效流表示形式是两个逗号分隔的整数,中间允许有空格(例如“ -3,4”或“ 55、7”或“ 1,2”)。
到目前为止的代码是:
inline std::istream& operator>> (std::istream& in, Coordinate& c)
{
Coordinate::coord_type x; // int
Coordinate::coord_type y;
in >> x;
// read comma
in >> y;
if (!in.fail())
c = Coordinate(x, y);
return in;
}
您将如何阅读分隔符?
让流选择逗号作为您的格式怎么样:
std::istream& comma(std::istream& in)
{
if ((in >> std::ws).peek() == ',')
in.ignore();
else
in.setstate(std::ios_base::failbit);
return in;
}
那么您可以读取数据中的逗号,如下所示:
in >> x >> comma >> y;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.