Открытие потока в С++

Поток можно открыть для чтения и/или записи в двоичном или текстовом режиме. Функция открытия потока имеет формат:
FILE* fopen(const char* filename, const char* mode);
Если поток открылся, функция возвращает указатель на предопределенную структуру типа FILE, содержащую всю необходимую для работы с потоком информацию, или NULL в противном случае.

Первый параметр — имя открываемого файла в виде С-строки, второй — режим открытия файла:
• "г" — файл открывается для чтения;
• "w" — открывается пустой файл для записи (если файл существует, он стирается);
• "а" — файл открывается для добавления информации в его конец;
• "г+" — файл открывается для чтения и записи (файл должен существо-вать);
• "W+" — открывается пустой файл для чтения и записи (если файл суще-ствует, он стирается);
• "а+" — файл открывается для чтения и добавления информации в конец.

Режим открытия может также содержать символы:
t (текстовый режим); b (двоичный режим)
Отличие в обработке символов перехода на новую строку.

По умолчанию файл открывается в текстовом режиме, при котором комбинация символов «возврат каретки» и «перевод строки» (0x13 0x10) при вводе преобразуются в одиночный символ перевода строки (при выводе выполняется обратное преобразование). В двоичном режиме эти преобразования не выполняются.

Пример:
FILE * f = fopen("d:\\cpp\\clata", "rb+");
Указатель f используется в дальнейших операциях с потоком. Его передают функциям ввода/вывода в качестве параметра. При открытии потока с ним связывается область памяти, называемая буфером. При выводе вся информация направляется в буфер и накапливается там до заполнения буфера или до закрытия потока.

Чтение осуществляется блоками, равными размеру буфера, и данные читаются из буфера. Буферизация позволяет более быстро и эффективно обмениваться информацией с внешними устройствами.

Следует иметь в виду, что при аварийном завершении программы выходной буфер может быть не выгружен, и возможна потеря данных.

С помощью функций setbuf и setvbuf можно управлять размерами и наличием буферов.

Существует пять предопределенных потоков, которые открываются в начале работы программы:
• стандартный ввод stdin;
• стандартный вывод stdout;
• стандартный вывод сообщений об ошибках stderr;
• стандартный дополнительный поток stdaux;
• стандартная печать stdprn.

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

Оставить комментарий

Вы должны быть авторизованы , чтобы оставить или оценить комментарий.

Онлайн всего: 3
Гостей: 3
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте