Форматный ввод для стандартных потоков ввода

 

Вид функцииscanf:

scanf (форматная строка, список аргументов);

В качестве аргументов используются адреса переменных.

 

Пример 21

scanf(“ %d%f ”, &x,&y);

Пример 22

int i;

float x;

char name[50];

scanf(“%d%f%s”,&i, &x, name);

 

С входной строкой

25 54.32E-1 Thompson

присвоит 25 – i, 5.432 – x, “Thompson’\0’” – name.

Функция gets описывается в библиотечном файле stdio.h.

Функции atoi, atol, atof (описывается в библиотечном файле stdlib.h) для преобразования строки соответственно в целое, длинное целое или вещественное число.

 

Пример 23 Пример, иллюстрирующий ввод-вывод.

int main()

{

SetConsoleOutputCP(1251); //функция для вывода текста кириллицей

char name[80], ageStr[80];

int age=0;

printf("Пожалуйста введите Ваше имя:");

gets(name);

printf("Привет, %s! Сколько Вам лет?", name);

gets(ageStr);

age=atoi(ageStr);

if (age>0 && age<=30) printf(" %s! Да Вам всего лишь %d лет?", name,age);

else printf(" %s! Вы большой молодец?", name);

getch();

return 0;

}

 

Будет выведено:

 

Пожалуйста введите Ваше имя: Иван

Привет, Иван! Сколько Вам лет? 25

Иван! Да Вам всего лишь 25 лет?

Операторы ввода – вывода C++

При использовании библиотеки классов C++, используется библиотечный файл iostream, в котором определены стандартные потоки ввода данных от клавиатуры cin и вывода данных на экран дисплея cout, а также соответствующие операции:

1) << – операция записи данных в поток;

2) >>– операция чтения данных из потока.

Операторы ввода (>>) и вывода (<<) не являются встроенными для языка C++, а обеспечиваются стандартной библиотекой с помощью потоков ввода – вывода. При запуске программы на выполнение автоматически открываются три стандартных потока языка C++:

cin – стандартный поток ввода (с клавиатуры);

cout– стандартный поток вывода (на дисплей);

cerr – стандартный поток для выдачи сообщений (на дисплей). Вместо потока cout для вывода сообщений об ошибках может использоваться поток cerr.

Для выполнения операторов потокового ввода – вывода в программу должна быть включена инструкция препроцессора:

 

#include <iostream> // подключить файл, где объявлены cin и cout

Для возможности использования кириллицы в программу должна быть включена инструкция препроцессора:

#include <windows.h>// файл, где определена функция SetConsoleOutputCP(1251)

или

#include <clocale> // файл, где определена функция setlocale(LC_CTYPE,"rus")

 

Пример 24. Следующая функция считывает набранное на клавиатуре целое число (например, 4321) и помещает его в переменную i, затем вводит в переменную d число с плавающей точкой (например, 12.34E5), после чего считывает набранную на клавиатуре строку символов (например, имя “Валентин”).

 

void f()

{

int i;

double d;

char name[20];

cin >> i; // считывание в i целого числа

cin >> d; // считывание в d числа с плавающей точкой удвоенной

// точности

cin >> name; // считывание в массив name строки символов

}

 

Три последние инструкции приведенной выше функции, если не учитывать комментарии, можно заменить одной строкой:

cin >> i >> d >> name;

При вводе данных нет необходимости ставить перед именами переменных оператор взятия адреса &. Оператор ввода >> берёт на себя задачу вычисления адреса, определение формата вводимых данных, преобразование символьного представления информации в двоичное.

 

Например:

void f()

{

cout << 10;

}

Эта функция поместит символ 1, а затем символ 0 в стандартный поток вывода, т. е. на экран в строку, на которую указывает курсор.

Можно выводить значения различных типов, например:

 

Пример 25. Вывод значений различных типов:

void h(int i)

{

cout << “Значение i равно “; // вывод текста

cout << i; // вывод целого

cout << ‘\n’; // помещает в выходной поток один символ – //переход на новую строку

}

 

Три последние инструкции приведенной выше функции, если не учитывать комментарии, можно заменить одной строкой:

cout << “Значение i равно “<< i<< ‘\n’;

 

При выводе отдельных символов каждый символ должен заключаться в одиночные кавычки в отличие от вывода строк символов, когда выводимая строка заключается в двойные кавычки.

 

Пример 18. Совместное использование операторов ввода и вывода:

#include "stdafx.h"

#include <iostream> // подключить файл, где объявлены cin и cout

#include <conio.h> // файл, где определена функция getch()

#include <windows.h>// файл, где определена функция SetConsoleOutputCP(1251);

using namespace std;

void main()

{

SetConsoleOutputCP(1251); //функция для вывода текста кириллицей

char name[20];

cout << "Пожалуйста, введите Ваше имя.\n";

cin >> name;

cout << "Привет, " << name << "!\n";

getch(); // ждать нажатия любой клавиши

}