在C ++中直接读取struct

时间:2015-05-05 21:48:26

标签: c++ cin

我们说我有一些结构,例如Rectangle

struct Rectangle
{
    int x0, x1, y0, y1;
};

是否可以以一种只能调用的方式创建一个Rectangle结构:

Rectangle rec;
cin >> rec;

?我认为应该可以以某种方式制作它,但我没有足够的经验。

声明

我不是在寻找这个:

cin >> rec.x0 >> rec.x1 >> rec.y0 >> rec.y1;

2 个答案:

答案 0 :(得分:10)

您可以使用:

Rectangle rec;
cin >> rec;

如果您定义了合适的operator>>函数。

std::istream& operator>>(std::istream& in, Rectangle& rec)
{
   return (in >> rec.x0 >> rec.x1 >> rec.y0 >> rec.y1);
}

如果您不允许定义此类函数,则无法使用您想要使用的语法。

答案 1 :(得分:4)

是的,最好的解决方案是为operator>>重载Rectangle

struct Rectangle
{
    int x0, x1, y0, y1;
};

istream& operator>>(istream& s, Rectangle& r)
{
    s >> r.x0 >> r.x1 >> r.y0 >> r.y1;
    return s;
}