Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Void WriteColor (тип_Спектр C )

{

switch (C)

{

            case красный: cout << "красный"; break;

            case оранжевый: cout << "оранжевый"; break;

            case желтый: cout << "желтый"; break;

            case зеленый: cout << "зеленый"; break;

            case голубой: cout << "голубой"; break;

            case синий: cout << "синий"; break;

            case фиолетовый: cout << "фиолетовый"; break;

            default: cout << "Неправильный цвет\ n";

}

}

Числовые значения констант перечисления можно изменять, например, так:

 

enum  тип_Спектр {

красный, оранжевый, желтый = 10, зеленый, голубой, синий, фиолетовый

};

 

После такого переопределения числового значения константы желтый, числовые значения всех констант будут следующими:

 

красный оранжевый желтый зеленый голубой синий фиолетовый
0 1 10 11 12 13 14

 

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

Организация работы с файлами

Потоки для работы с файлами

Общие сведения

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

· поток ввода (класс ifstream);

· поток вывода (класс ofstream);

· поток ввода-вывода (класс fstream).

Класс ifstream используется для выполнения чтения данных из файлов. Поток ofstream – для записи данных в файлы. Поток fstream – для чтения и записи данных в файлы.

Для использования этих классов потоков необходимо в программу включить заголовочный файл < fstream >.

Для выполнения любых работ с файлом необходимо:

1) создать поток одного из классов файловых потоков;

2) связать созданный поток с конкретным файлом (открыть конкретный файл для работы);

3) выполнить необходимые действия с файлом (чтение / запись данных);

4) закрыть файл.

Пример работы с файлом

 

bool Запись_данных_в_текстовый_файл (char * FileName)

{

ofstream File;   // Создали поток вывода для записи данных в файл

File.open (FileName); // Открыли файл

if (! File. is_ open ()) // Проверили удалось ли открыть файл

{

   cout << "Открыть файл не удалось! \ n";

   return 0; // Файл не открыт

}

for (int I = 1; I <= 10; ++ I) // Записываем 10 строк в файл

  File << "Строка " << I << endl;

File. close (); // Закрываем файл

return 1;

}

 

bool Чтение_данных_из_текстового_файла (char * FileName)

{

ifstream File; // Создали поток ввода для чтения данных из файла

File. open (FileName); // Открыли файл

if (! File. is_ open ()) // Проверили удалось ли открыть файл

{

   cout << “Открыть файл не удалось! \ n”;

   return 0; // Файл не открыт

}

char S[100];

while (! File. eof ()) // Читаем все строки из файла и выводим их на экран

{

   File.getline (S, 100);

   cout << S << endl;

}

File.close (); // Закрываем файл

return 1;

}

 

Int main ()

{

setlocale (0, "");

if (Запись _данных _в _текстовый _файл ("E:\\test.txt"))

            Чтение_данных_из_текстового_файла(" E:\\ test. txt");

system("pause");

return 0;

}

 

Работа с файлами

Создание потока, открытие и закрытие файла

 

Либо последовательность из двух инструкций:

 

ofstream File; - создали поток

File. open (" E:\\ test. txt"); - связали поток с файлом (открыли файл)

 

Либо так:

 

ofstream File (" E:\\ test. txt"); - создали поток и открыли файл

 

После открытия файла необходимо обязательно проверить открылся ли файл.

Если файл открыть не удалось, то переменная потока (File) принимает значение false, если файл открыт – true. Следовательно, проверку успешного открытия файла можно выполнит так:

 

if (! File)

// Ошибка

 

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

 

if (! File. is_ open ())

// Ошибка

 

Файл закрывается с помощью функции потока close ():

 

File. close ();

Подробнее об открытии файла. Каждый поток использует свой вариант функции open.   Их прототипы выглядят так:

 

void ifstream::open (const char * FileName,

                               ios::openmode Mode = ios::in);

void ofstream::open (const char * FileName,

                                ios::openmode Mode = ios::out | ios::trunc);

void fstream::open (const char * FileName,

                               ios::openmode Mode = ios::in | ios::out);

 

Первый параметр определяет имя открываемого файла (представляет собой массив символов).

Второй параметр определяет режим открытия файла. Этот параметр имеет значение по умолчанию, то есть является необязательным. Возможные значения этого параметра:

· ios:: app – при открытии файла на запись (поток ofstream) обеспечивает добавление всех выводимых в файл данных в конец файла;

· ios:: ate – обеспечивает начало поиска данных в файле начиная с конца файла;

· ios:: in – файл открывается для чтения из него данных;

· ios:: out – файл открывается для записи данных в файл;

· ios:: binary – открытие файла в двоичном режиме (по умолчанию все файлы открываются в текстовом режиме);

· ios:: trunc – содержимое открываемого файла уничтожается (его длина становится равной 0).

Эти флаги можно комбинировать с помощью побитовой операции ИЛИ (|).

Если файл открывается без использования функции open, эти флаги тоже можно использовать:

fstream File (" E:\\ test. txt", ios:: out | ios:: app); - файл открывается на вывод с добавлением записываемых данных в конец файла.

 

Запись и чтение данных в текстовых файлах

Запись и чтение данных в текстовых файлах ничем не отличается от способов ввода-вывода данных с помощью потоков cin и cout. Методы форматирования вывода и вводы данных остаются такими же (флаги форматирования, манипуляторы, функции потоков).

Необходимо помнить, что при использовании операции >> для чтения данных из текстовых файлов, процесс чтения останавливается при достижении пробельного символа (так же как и в потоках cin и cout). Поэтому для чтения строки текста, содержащей несколько слов, необходимо, как и раньше, использовать, например, функцию getline ().

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...