Язык программирования C++. Вводный курс




Ввод - часть 2


Пожалуйста, введите item_number, item_name и price:

10247 widget 19.99

Введены значения: item# 10247 widget @$19.99

Можно ввести каждый элемент на отдельной строке. По умолчанию оператор ввода отбрасывает все разделяющие пустые символы: пробел, символ табуляции, символ перехода на новую строку, символ перевода страницы и символ возврата каретки. (О том, как отменить это поведение, см. в разделе 20.9.)

Пожалуйста, введите item_number, item_name и price:

10247

widget

19.99

Введены значения: item# 10247 widget @$19.99

При чтении ошибка iostream

более вероятна, чем при записи. Если мы вводим такую последовательность:

// ошибка: item_name должно быть вторым

BuzzLightyear 10009 8.99

то инструкция

cin >> item_number;

закончится ошибкой ввода, поскольку BuzzLightyear не принадлежит типу int. При проверке объекта istream

будет возвращено false, поскольку возникло состояние ошибки. Более устойчивая к ошибкам реализация выглядит так:

cin >> item_number;

if ( ! cin )

   cerr << "ошибка: введено некорректное значение item_number!\n";

Хотя сцепление операторов ввода поддерживается, проверить корректность каждой отдельной операции нельзя, поэтому пользоваться таким приемом следует лишь тогда, когда ошибка невозможна. Наша программа теперь выглядит так:

#include <iostream>

#include <string>

int main()

{

    int item_number;

    string item_name;

    double item_price;

    cout << "Пожалуйста, введите item_number, item_name и price: "

         << endl;

    // хорошо, но легче допустить ошибку

    cin >> item_number >> item_name >> item_price;

    cout << "Введены значения: item# "

               << item_number << " "

               << item_name << " @$"

               << item_price << endl;

}

Последовательность

ab c

d     e

составлена из девяти символов: 'a', 'b', ' '




Содержание  Назад  Вперед