История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Топ:
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Интересное:
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
2017-06-13 | 320 |
5.00
из
|
Заказать работу |
|
|
Если при работе с функцией 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;
|
|
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!