我有一个自定义的Coordinate类,并希望重载运算符>>为了它。 我不确定这样做的正确方法是什么。
坐标的有效流表示是两个以逗号分隔的整数,其间允许有空格(例如“-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;
}
你怎么读这个分隔符?
答案 0 :(得分:3)
如何让流选择逗号作为您的格式:
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;