Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Часть V. Полезные особенности




объект — справа. Во-вторых, оператор сдвига влево имеет очень низкий приори- тет. Благодаря этому выражения с ним работают так, как ожидается.

#include

void fnfin t a, in t b)

{                                                                                           •

cout « "a + b" « a + b « "\n";

// cperator+ имеет более высокий приоритет,

// чем                                               :

// Следовательно, данное выражение

// интерпретируется как

//cout « "а « (а + Ь) << "\п";

//а не как

//cout « ("а + « а) + « "\п");

}

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

 

void   a, int b) f

((cout « + « a + b) « "\n";

 

Но, на мой взгляд, настоящая причина кроется в том, что оператор сдвига здорово смотрится. Символы выглядят так, как будто что-то выводится из программы, а "» " — как будто что-то вносится в нее. И наконец,     бы и не па"?..

 

А что же такое                    Объект класса                 содержит члены, необходи- мые для управления потоком ввода-вывода. A                                                                           соответственно описывает поток ввода.

В  С            эквивалентна структура FILE,  определенная  в                   Функция open () открывает файл для ввода и вывода и возвращает указатель на объект типа FILE, в котором хранится информация, необходимая для осуществления операций ввода-вывода. Этот объект используется при вызове функций f... таких как

,                  и

В составе библиотеки потоков ввода-вывода определено еше несколько подклас- сов ostream и istream, которые используются для ввода и вывода в файлы и внут- ренние буферы.

 

с

Подклассы                     ifstrea m и fstream объявлены в заголовочном  файле и обеспечивают потоки ввода-вывода в дисковые файлы. Эти три класса предоставляют множество функций для управления вводом и выводом, многие из ко- торых наследуются от ostream и istream. Полный список этих функций вы можете найти в документации к компилятору, а здесь я приведу только несколько из них,

чтобы вы могли с            начать.

Класс ofstream, который используется для файлового вывода, имеет несколько конструкторов; наиболее часто применяется следующий:

 

int mode = ios::out, int prot

 

 


Глава 26. Использование потоков ввода-вывода


Первый аргумент этого конструктора — указатель на имя открываемого файла. Второй и третий аргументы определяют, как именно должен быть открыт файл. Кор- ректные значения аргумента mode приведены в табл. 26.2, a pro t — в табл. 26.3. Эти значения являются битовыми полями, к которым применяется оператор OR (классы io s  и         — родительские по отношению к ostream).

Таблица26.2.Значенияаргументаmodeвконструкторекласса           stream        


ФЛАГ                                         НАЗНАЧЕНИЕ


ios ios

 

ios ios ios


 

ate in

 

 

trunc

 

nocreate noreplace binary


Дописывать в конец файла, если он существует Открыть файл для ввода (подразумевается для

Открыть файл для вывода (подразумевается для ostream )

Обрезать файл до нулевой длины, если он существует (используется по умолчанию)

Если файла не существует, вернуть сообщение об ошибке Если файл существует, вернуть сообщение об ошибке

Открыть файл в бинарном режиме (альтернатива текстовому режиму)


Таблица 26.3. Значения аргумента   в конструкторе класса    stream                        





ФЛАГ                                         НАЗНАЧЕНИЕ

filebuf : : openpro t      Режим совместного чтения и записи

:                           Исключительный режим без совместного доступа

:                            Режим совместного чтения

filebuf :                             Режим совместной записи

 

Приведенная ниже программа открывает файл                         а затем записывает в него некоторую важную информацию.

 

void fn()

{

// Откроем текстовый файл MYNAME для записи,

// уничтожив имевшееся в нем содержимое

 

//теперь запишем в файл

туп << "У попа была собака\п";

}

Конструктор                         of strea m (char   получает только имя, а потому ис-

пользует для режима открытия файла значения по умолчанию. Если файл MYNAME уже существует, он урезается; в противном случае создается новый файл MYNAME. Кроме того, файл открывается в режиме совместного чтения и записи.

Второй  конструктор,                                                                int) , позволяет программи- сту указывать другие режимы ввода-вывода. Например, если бы я захотел открыть файл в бинарном режиме и произвести запись в конец этого файла (если он уже су- ществует), я мог бы создать объект класса ofstrea m так, как приведено ниже (напомню, что в бинарном режиме при выводе не выполняется преобразование сим- вола новой строки \п в пару символов перевода каретки и новой строки так же как при вводе не происходит обратного преобразования).

 


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 226; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.018 с.)
Главная | Случайная страница | Обратная связь