Форматированный ввод в c ++ - PullRequest
2 голосов
/ 01 апреля 2010

эй, я новичок в c ++ (и вообще программирую) я ищу простой способ взять две двойные (сразу) с клавиатуры и сохранить их в структуре, которую я создал под названием «Точка», а затем в конечном итоге сохранить точку в вектор точек, который является членом класса (называется "Полигон"). я знаю, что могу сделать это с помощью scanf, но мне нужно знать, как это сделать с помощью cin.

надеюсь, что это имеет смысл.

заранее спасибо

Julz

Ответы [ 2 ]

3 голосов
/ 01 апреля 2010

Альтернативой является перегрузка >>, чтобы она работала непосредственно с вашей структурой:

struct Point {
    int x;
    int y;

    friend std::istream& operator >>(std::istream& stream, Point& p) {
        return stream >> p.x >> p.y;
    }
}

Вы возвращаете поток, так что вы можете связать входы так же, как вы используете встроенные типы: cin >> p1 >> p2 >> p3. В этом конкретном случае оператор может быть автономной функцией, а не другом, но в целом с другом легче работать.

В этом содержится много полезных подробностей о подобных вещах.

2 голосов
/ 01 апреля 2010

Вы можете сделать:

double d1,d2;
cin>>d1>>d2;

или вы можете напрямую прочитать ее в структурную переменную как:

point p;
cin>>p.x>>p.y;

при условии, что ваша структура определена примерно так:

struct point {
 double x;
 double y;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...