Главная Обратная связь

Дисциплины:






Организация ввода-вывода.



Стандартный

Для начала рассмотрим способ ввода-вывода данных, который использовался в языке программировании на языке С.

1 2 3 printf("ola-la"); //выводтекста, написанноговнутрикавычек int a = 25; printf ("I am %d years old", a);

Последняя строка выведет сообщение "I am 25 yearsold" ; %d означает, что заданное значение переменной отобразится в определенном месте в указанной фразе.
В зависимости от типа переменных используются различные вариации примененного выше %d. То есть после знака процента используются следующие буквенные обозначения:

§ d - целочисленный (int)

§ f - вещественный (double)

§ c - символьный (char)

Эти же шаблоны используются для считывания.

1 2 3 4 5 6 int a; char b; double c; scanf ("%d", &a); //в переменную а запишется введенное значение. scanf ("%с", &b); // в переменную b запишется введенный символ. scanf ("%f", &c); // переменная с преобразуется в веденное значение.

Теперь вы умеете считывать данные с консоли. Для просмотра введенного в программу кода нажмите комбинацию ctrl+f5 , введите значение, нажмите enter и оцените результат.
Но в С++ есть более удобный способ для считывания данных без использования шаблонов. Для этого вам требуется перед функцией intmain() указать usingnamespacestd :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include<iostream> #include<string> using namespace std; int main() { int a; double b; char c; string d; cin >> a; // считываем из консоли целочисленное значение cout << a << endl; // выводим в консоль целочисленное значение cin >> b; cout << b << endl; // выводим из консоли вещественное значение cin >> c; cout << c ; // выводим из консоли символьное значение cin >> d; cout << d; // выводим из консоли строку return 0; }

Обратите внимание, что отличие в коде при выводе из консоли состоит из наличие/отсутствия <<endl . Не пугайтесь, <<endl всего лишь переводит вывод результата на следующую строчку.
Результат рассматриваемого кода:

 

Cincout

Ввод-вывод данных в языке C++ осуществляется либо с помощью функций ввода-вывода в стили C, либо с использованием библиотеки классовC++. Преимущество объектов C++ в том, что они легче в использовании, поэтому предлагаю рассмотреть именно их.

Описание объектов для управления вводом-выводом содержится в файлеiostream.h. При подключении этого файла с помощью директивы #include<iostream.h>в программе автоматически создаются виртуальные каналы связиcinдля ввода с клавиатуры и coutдля вывода на экран, а также операции помещения в поток << и чтения из потока >>.



С помощью объекта cin и операции >> можно присвоить значение любой переменной. Например, если переменная x описана как целочисленная, то команда cin>>x;означает, что в переменную xбудет записано некое целое число, введенное с клавиатуры. Если необходимо ввести несколько переменных, то следует написать cin>>x>>y>>z;.

Объект coutи операция << позволяет вывести на экран значение любой переменной или текст. Текст необходимо заключать в двойные кавычки. Записьcout<<x;означает вывод на экран значения переменной x.

File

На самом деле, файловый ввод-вывод ничем не отличается от консольного. За единственным исключением – если данные читаются из файла, то в любой момент можно вернуться к началу файла и считать все заново.

Для того, чтобы в C++ работать с файлами, необходимо подключить заголовочный файл fstream:

#include <fstream>

После этого можно объявлять объекты, привязанные к файлам: для чтения данных из файла используются объекты типа ifstream (аббревиатура от input file stream, для записи данных в файл используются объекты типа ofstream (output file stream). Например

ifstream in; // Поток in будем использовать для чтения
ofstream out; // Поток out будем использовать для записи

Чтобы привязать тот или иной поток к файлу (открыть файл для чтения или для записи) используется метод open, которому необходимо передать параметр – текстовую строку, содержащую имя открываемого файла.

in.open("input.txt");
out.open("output.txt");

После открытия файлов и привязки их к файловым потокам, работать с файлами можно так же, как со стандартными потоками ввода-вывода cin и cout. Например, чтобы вывести значение переменной x в поток out используются следующая операция

out<<x;

А чтобы считать значение переменной из потока in

in>>x;

Для закрытия ранее открытого файла используется метод close() без аргументов:

in.close();
out.close();

Закрытый файловый поток можно переоткрыть заново при помощи метода open, привязав его к тому же или другому файлу.

При считывании данных из файла может произойти ситуация достижения конца файла (endoffile, сокращенно EOF). После достижения конца файла никакое чтение из файла невозможно. Для того, чтобы проверить состояние файла, необходимо вызвать метод eof(). Данный метод возвращает true, если достигнут конец файла или false, если не достигнут. Кроме того, состояние файлового потока можно проверить, если просто использовать идентификатор потока в качестве логического условия:

if (in)
{
}

Также можно использовать в качестве условия результат, возвращаемой операцией считывания. Если считывание было удачным, то результат считается истиной, а если неудачным – ложью. Например, организовать считывание последовательности целых чисел можно так:

int d;
while(in>>d)
{
}

А организовать считывание файла построчно (считая, что строка заканчивается символом перехода на новую строку) так:

string S;
while ( getline(in,S))
{
}





sdamzavas.net - 2019 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...