Программа, написанная разработчиком обязательно должна иметь обратную связь с внешним миром. Но много толку от этой программы не будет. В программировании под миром часто подразумевается пользователь. Но для общения пользователя с компьютером необходим стандартный набор команд. Такими базовыми методами взаимодействия окружающего мира и пользователя выступают команды ввода-вывода.
В языке С++ можно использовать команды двумя разными способами: традиционный метод ввода-вывода библиотеки языка С и с помощью библиотеки Standard Template Library. И тот и другой варианты используют команды, заложенные в операционную систему.
Чтобы использовать в программе на С++ функции, позволяющие работать с информацией, придется подключить библиотеку . Внимание! Для корректного сбора файла нужно разрешить компилятору использовать данную библиотеку. Библиотека позволяет использовать методы для ввода/вывода данных при работе как с консолью, так и с файлом. Интересно, что в ней помимо функций привычных для языка С, находятся процедуры с увеличенной безопасностью. Последние – заканчиваются следующую пару символов «_s».
Главное помнить, что при использовании традиционного метода откроются следующие потоки:
- stdin – для ввода;
- stdout – для вывода;
- stderr – для сообщений об ошибке.
Также стоит знать, что методы stdio для вывода информации являются лишь внешней оболочкой для процедур ввода-вывода.
Вот пример минимальных стандартных методов ввода/вывода:
- printf – консольный вывод, позволяющий исправить текст;
- scanf –консольный ввод, позволяющий исправить текст;
- fprintf – стандартный вывод из файла;
- fscanf – стандартный ввод в файл.
Стоит сказать пару слов о нюансах при работе с классом «FILE». С помощью fopen() открывают файл. Первым параметром необходимо указать имя файла, а вторым – режим, в котором откроется файл. Всех проделанных манипуляций с файлом надо закрыть файл функцией fclose().
Если выбор пал на вариант работы с вводом-выводом при помощи потоков STL в программе, то в этой ситуации включенной библиотекой будет выступать , а для работы с файлом – .
В начале запуска программы неявно откроются четыре потока:
- cin – для внесения данных с любого устройства ввода ( например, клавиатуры );
- cout – для отображения данных на любом устройстве ( например, мониторе ) ;
- cerr – для показа специальной информации или ошибке;
- clog – буферизированная аналогия cerr, так как cerr – является не буферизированным.
Для того, чтобы вывести на экран строку «Привет, мир!», достаточно написать такой код:
std::cout << "Привет, мир!” << std::endl;
Создание экземпляра одного из трех классов «ofstream», «ifstream», «fstream» даст доступ к возможности манипулировать данными файлов. У перечисленных классов имеется метод open, который оборачивает файл в поток или, если сказать просто, раскрыть файл. В open() передаются параметры: файловое имя и вид режима, в котором надо открыть файл. Режим указывать необязательно, ведь у этого параметра задана информация по умолчанию. Пример кода, который в режиме текстового файла вносит информацию о счетчике цикла:
ofstream out_f; out_f.open(“text.txt”); if (out_f) { for (int data = 0; data < 5; ++data) { out_f << data; if (out_f.bad()) { cerr << "Ошибка записи! "; return -2; } } out_f.close(); } else { cerr << "Ошибка, файл не существует!”; return -1; }
Программист должен сам решить, какой принцип работы с информацией будет использован при написании кода. Если в техническом задании не прописан конкретный вариант, какой механизм следует использовать, то лучше всего использовать вариант с потоками библиотеки STL. Этот вариант считает более безопасным, чем традиционный метод использования функций языка С.