繁体   English   中英

从istream读取自定义坐标类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM