Функция проверки успешности открытия файла fail ( )




Если при работе с функцией open() идет обращение к несуществующему файлу, то компилятор создаст новый пустой файл. Поэтому необходимо проверять, был ли открыт уже существующий файл. Функция fail() находится в библиотеке fstream.h и результатом этой функции является логическое выражение, и если обращение к функции open() было выполнено неудачно, то fail() возвращает значение “истина”.

 

# include < iostream >

# include < fstream >

# include < stdlib.h >

main () {

ifstream in;

in.open (“data.txt”, ios::nocreate);

if (in.fail()) {

cout << ” File doesn’t exist \n ”;

exit (1);

}

 

Для проверки конца файла применяется функция eof() (end of file).

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

# include < fstream.h >

main () {

ifstream A;

ofstream B;

A.open (“C:\\Documents and Settings\\POVT\\Data.txt”);

B.open (“C:\\result.txt”);

double a;

while (!A.eof ()) //пока не конец файла

{

A >> a;

B << a << endl;

}

A.close ();

B.close ();

return 0;

}

Условие в скобках оператора while можно написать другим способом, тогда программа будет иметь вид:

# include < fstream.h >

main () {

ifstream A;

ofstream B;

A.open (“C:\\Documents and Settings\\POVT\\Data.txt”);

B.open (“C:\\result.txt”);

double a;

while (A >> a) // пока из потока А идут переменные а

{

B << a << endl;

}

A.close ();

B.close ();

return 0;

}

Форматированный вывод данных

Форматирование – преобразование данных в соответствии с установленными параметрами.

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

Для форматирования в языке С++ используются манипуляторы и функции.

Манипулятор – это функция, которая используется во входном или выходном потоке после операций >> и << (взять или отправить в поток). Манипуляторы бывают двух типов: без параметров и с параметрами.

Манипуляторы без параметров находятся в библиотеке iostream.h.

Манипулятор Описание
dec Используется для перевода числа в десятичную систему счисления
hex Используется для перевода числа в шестнадцатеричную систему счисления
oct Используется для перевода числа в восьмеричную систему счисления
endl Используется для вставки конца строки, выгружения из буфера
ends Вставляет нулевой признак конца строки

 

Пример использования:

int a = 10;

cout << oct << a << ends;

cout << hex << a << endl;

cout << dec << a;

 

Манипуляторы с параметрами находятся в библиотеке iomanip.h

Манипулятор Описание
setw(n) Устанавливает ширину поля вывода размером в n позиций
setfill(c) Устанавливает символ - «заполнитель» с
setprecision(n) Устанавливает точность при выводе действительных чисел
setiosflags(flag) Используется для установки флагов форматирования
resetiosflags(flag) Используется для сброса флагов форматирования

 

Флаги форматирования устанавливают в потоке правила форматирования.

Флаг Описание
fixed Используется для вывода вещественных чисел в формате с фиксированной запятой
scientific Используется для представления вещественных чисел с плавающей запятой
showpoint Используется для отображения в числе десятичной точки, даже в тех случаях, когда, дробная часть равна нулю
showpos Используется для вывода знака «+» перед положительными значениями

 

Пример использования:

double a = 2.5;

cout << setw(10) << setfill (‘*’) << setprecision (2);

cout << setiosflags (ios::showpoint) << a << endl;

a = 5E-10;

cout << setw (10) << setfill (‘*’) << setprecision (2);

cout << setiosflags (ios::showpoint | ios::scientific | ios::showpos) << a;

cout << resetiosflags (ios::showpos) << a;

Функции форматирования

Основное отличие использования функций форматирования от манипуляторов заключается в формате обращения к функции. Манипулятор используется после операции “ << ”, функция используется после операции “.” (cout.функция; cout<<манипулятор).

Функции выполняют те же действия что и манипуляторы.

 

Функция Описание
width(n) Устанавливает ширину поля в n позиций
fill(c) Устанавливает символ «заполнитель» с
precision(n) Устанавливает точность при выводе действительных чисел
setf(flags) Используется для установки флагов форматирования
unsetf(flags) Используется для сброса флагов форматирования

 

Пример использования:

double a=2.5;

cout.widht (10);

cout.fill (‘*’);

cout.precision (2);

cout.setf (ios::showpoint | ios::scientific | ios::showpos);

cout << a;



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-04-04 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: