Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 курс / Лекции / Лекция 1.pptx
Скачиваний:
75
Добавлен:
18.02.2023
Размер:
155.45 Кб
Скачать

06.09.2016

Лекция 1

Отличия языка С++ от языка С

Система базовых типов С++

char

– символьный тип

wchar_t

– расширенный

 

символьный

bool

– логический тип (true,

 

false)

 

int

– целочисленный тип

float

– вещественный тип

double – вещественный тип

 

Модификаторы типов

1.

двойной очности

signed(знаковый) и unsigned

2.

(беззнаковый)

short (короткий) и long (длинный)

Ввод и вывод

Ввод-вывод данных в языке C++ осуществляется либо с помощью стандартных функций языка C (stdio.h), либо с использованием библиотеки классов C++.

Описание

объектов для управления вводом-

выводом содержится

в файле iostream.h. При

подключении

этого

файла

с

помощью

директивы #include

<iostream.h> в

 

программе

автоматически создаются виртуальные каналы связи cin для ввода с клавиатуры и cout для вывода на экран, а также операции помещения в поток << и чтения из потока >>.

Функции ввода-вывода сгруппированы в соответствии с возможностями в три основных потоковых класса:

istream- содержит средства ввода;

ostream - содержит средства вывода;

iostream - поддерживает двунаправленный ввод-вывод, является производным от первых двух классов.

Библиотека IOSTREAM.H содержит также классы, с помощью которых можно управлять вводом-выводом данных из файлов:

ifstream - порожден от istream и подключает к программе файл, предназначенный для ввода данных;

ofstream - порожден от ostream и подключает к программе файл, предназначенный для вывода данных;

fstream - порожден от iostream и подключает к программе файл, предназначенный как для ввода данных,

так и для вывода данных;

Стандартные потоки cin, cout и ce

Стандартным потокам языка С stdin, stdout и stderr, объявленным в файле STDIO.H, в С++ соответствуют объекты-потоки cin, cout, cerr и clog, подключаемые посредством файла IOSTREAM.H:

cin - объект класса istream, связанный со стандартным потоком ввода;

cout - объект класса ostream, связанный со стандартным потоком вывода;

cerr - объект класса ostream, не поддерживающий буферизацию

исвязанный со стандартным потоком ошибок;

clog - объект класса ostream, поддерживающий буферизацию

исвязанный со стандартным потоком ошибок.

Операторы ввода и вывода данны

Ввод-вывод в С++ значительно усовершенствован и упрощен благодаря универсальным операторам >> (ввод) и << (вывод). Эти операторы корректно обрабатывают все встроенные типы данных, т.к. при поступлении данных они самостоятельно анализируют их тип и выбирают подходящий формат представления.

При вводе данных нет необходимости ставить перед именами переменных оператор взятия адреса &. Эту задачу берет на себя оператор >>.

Пример ввода и вывода данных с помощью функций scanf() и printf() языка С:

scanf(“%d%f%c”, &i_val, &f_val, &sym);

printf(“Целое число: %d, вещественное число: %f, символ: %c \n”, i_val, f_val, sym);

Это же выражение на языке С++:

cin >> i_val >> f_val >> sym;

cout << “Целое число: “ << i_val << “, вещественное число: “ << f_val << “, символ:” << sym << endl;

Для считывания строки с пробелами:

cin >> i_val >> f_val >> sym;

Функция cin.getline()

Для использования cin.getline вам необходимо указать символьную строку, в которую будут помещаться символы, а также размер строки, как показано ниже:

cin.getline(string, 64); сin.getline(string2, sizeof(string2));

Следующая программа GETLINE.CPP использует функцию cin.getline для чтения с клавиатуры строки текста:

#include <iostream.h> void main(void)

{

char string[128];

cout << "Введите строку текста и нажмите Enter" << endl; cin.getline(string, sizeof(string));

cout << "Вы ввели: " << string << endl;

}

Создание новых типов данных

В языке С++ объявление новых типов (enum, struct, union, class) осуществляется без использования оператора typedef:

struct Student{ char fio[3][16]; int kurs;

float rate; };

Student st = {”Иванов”,”Иван”,”Иванович”,1,7.0};

#include <iostream> using namespase std;

int main(int argc, char* argv[])

{

struct Student{ char fio[3][16]; int kurs;

float rate; };

Student st;

cout << "Введите в формате \” Имя Фамилия Отчество курс успеваемость\“\n";

cin >> st.fio[0] >> st.fio[1] >> st.fio[2] >> st.kurs >> st.rate;

cout << “Имя: " << st.fio[0] << ' ' << st.fio[1] << ' ' << st.fio[2] << '\n'; cout << “Курс: " << st.kurs << '\n';

cout << “Успеваемость: " << st.rate << '\n'; return 0;

}

регрузка операторов ввода и выво

Для обработки данных нестандартных (пользова- тельских) типов данных производится перегрузка операторов << и >>. Рассмотрим пример на основе структуры Student, описанной ранее:

ostream& operator << (ostream& osout, Student stud)

{

osout << “Фамилия: “ << stud.fio[0] << endl; osout << “Имя: ” << stud.fio[1] << endl; osout << “Отчество: ” << stud.fio[2] << endl; osout << “Курс: ” << stud.kurs << endl;

osout << “Средний балл: ” << stud.rate<< endl;

}

 

Для вывода содержимого структуры

достаточно

задать такое выражение:

 

cout << stud;

Файловый ввод-вывод

#include <fstream> #include <iostream>

using namespace std;

int main(int argc, char* argv[])

 

{

 

setlocale(LC_ALL, "rus");

 

ofstream fout("cpp.txt");

// создаём объект класса ofstream для записи и

// связываем его с файлом cpp.txt

fout << "Работа с файлами в С++"; // запись строки в файл

fout.close();

 

// закрываем файл

char buff[50];

// буфер промежуточного хранения считываемого из файла текста

ifstream fin("cpp.txt");

// открыли файл для чтения

fin >> buff;

 

// считали первое слово из файла

cout << buff << endl;

// напечатали это слово

fin.getline(buff, 50);

// считали строку из файла

fin.close();

 

// закрываем файл

cout << buff << endl;

// напечатали эту строку

return 0;

}

Соседние файлы в папке Лекции