Потоковый ввод-вывод

Эти функции обрабатывают данные разных размеров и форматов, от одного символа до больших структур данных. Они также предоставляют возможность буферизации, которая может повысить производительность. Размер буфера потока по умолчанию 4K. Эти процедуры влияют только на буферы, созданные процедурами библиотеки времени выполнения, и не затрагивают буферы, созданные операционной системой.

Потоковые процедуры ввода и вывода

Подпрограмма

Применение

Эквивалент в .NET Framework

clearerr, clearerr_s

Очистить индикатор ошибки для потока

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

fclose

Закрыть поток

System::IO::Stream::Close, System::IO::BinaryReader::Close, System::IO::BinaryWriter::Close, System::IO::TextReader::Close, System::IO::TextWriter::Close, System::IO::StringReader::Close, System::IO::StringWriter::Close, System::IO::StreamReader::Close, System::IO::StreamWriter::Close

_fcloseall

Закрыть все открытые потоки, кроме stdin, stdout и stderr

System::IO::Stream::Close, System::IO::BinaryReader::Close, System::IO::BinaryWriter::Close, System::IO::TextReader::Close, System::IO::TextWriter::Close, System::IO::StringReader::Close, System::IO::StringWriter::Close, System::IO::StreamReader::Close, System::IO::StreamWriter::Close

_fdopen, wfdopen

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

System::IO::FileStream::FileStream

feof

Проверить на конец файла или потока

System::IO::FileStream::Read

ferror

Проверить на наличие ошибки в потоке

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

fflush

Сбросить поток в буфер или на запоминающее устройство

System::IO::FileStream::Flush

fgetc, fgetwc

Считать символ из потока (функциональные версии getc и getwc)

System::IO::StreamReader::Read

_fgetchar, _fgetwchar

Считать символ из stdin (функциональные версии getchar и getwchar)

System::Console::Read

fgetpos

Получить положение индикатора в потоке

System::IO::FileStream::Position

fgets, fgetws

Считать строку из потока

System::IO::StreamReader::ReadLine, System::IO::TextReader::ReadBlock

_fileno

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

System::IO::FileStream::Handle

_flushall

Сбросить все потоки в буфер или запоминающее устройство

System::IO::FileStream::Flush, System::IO::StreamWriter::Flush, System::IO::TextWriter::Flush, System::IO::BinaryWriter::Flush

fopen, _wfopen, fopen_s, _wfopen_s

Открыть поток

System::IO::File::Open

fprintf, _fprintf_l, fwprintf, _fwprintf_l, fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l

Записать форматированные данные в поток

System::IO::StreamWriter::Write

fputc, fputwc

Записать символ в поток (функциональные версии putc и putwc)

System::IO::StreamWriter::Write

_fputchar, _fputwchar

Записать символ в stdout (функциональные версии putchar и putwchar)

System::Console::Write

fputs, fputws

Записать строку в поток

System::IO::StreamWriter::Write

fread

Считать неформатированные данные из потока

System::IO::FileStream::Read

freopen, _wfreopen, freopen_s, _wfreopen_s

Переопределить указатель потока FILE, чтобы он указывал на новый файл или устройство

System::IO::File::Open

fscanf, fwscanf, fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l

Считать форматированные данные из потока

System::IO::StreamReader::ReadLine; дополнительно ознакомьтесь с методами Parse, например System::Double::Parse.

fseek, _fseeki64

Переместить указатель файла в заданное место

System::IO::FileStream::Position, System::IO::FileStream::Seek

fsetpos

Установить положение индикатора в потоке

System::IO::FileStream::Position

_fsopen, _wfsopen

Открыть поток с совместным доступом к файлу

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

ftell, _ftelli64

Получить текущее положение в файле

System::IO::FileStream::Position

fwrite

Записать неформатированные элементы данных в поток

System::IO::FileStream::Write

getc, getwc

Считать символ из потока (версии-макросы fgetc и fgetwc)

System::IO::StreamReader::Read

getchar, getwchar

Считать символ из stdin (версии-макросы fgetchar и fgetwchar)

System::Console::Read

_getmaxstdio

Возвращает количество одновременно открытых файлов, допустимое на уровне потокового ввода-вывода.

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

gets, getws, gets_s, _getws_s

Считать строку из stdin

System::Console::Read

_getw

Считать двоичный int из файла

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

printf, _printf_l, wprintf, _wprintf_l,printf_s, _printf_s_l, wprintf_s, _wprintf_s_l

Записать форматированные данные в stdout

System::Console::Write

putc, putwc

Записать символ в поток (версии-макросы fputc и fputwc)

System::IO::StreamWriter::Write

putchar, putwchar

Записать символ в stdout (версии-макросы fputchar и fputwchar)

System::Console::Write

puts, _putws

Записать строку в поток

System::Console::Write

_putw

Записать двоичный int в поток

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

rewind

Переместить указатель файла на начало потока

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

_rmtmp

Удалить временные файлы, созданные tmpfile

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

scanf, _scanf_l, wscanf, _wscanf_l,scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l

Считать форматированные данные из stdin

System::Console::ReadLine; также ознакомьтесь с методами Parse, например System::Double::Parse.

setbuf

Управлять потоковой буферизацией

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

_setmaxstdio

Задать максимальное число одновременно открытых файлов на уровне потокового ввода-вывода.

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

setvbuf

Управлять потоковой буферизацией и размером буфера

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

_snprintf, _snwprintf, _snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l

Записать форматированные данные указанной длины в строку

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

_snscanf, _snwscanf, _snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l

Читают форматированные данные указанной длины из стандартного входного потока.

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

sprintf, swprintf, sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l

Записать форматированные данные в строку

System::String::Format

sscanf, swscanf, sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l

Считать форматированные данные из строки

См. методы Parse, такие как System::Double::Parse

_tempnam, _wtempnam

Создать временное имя файла в данном каталоге

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

tmpfile, tmpfile_s

Создать временный файл

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

tmpnam, _wtmpnam, tmpnam_s, _wtmpnam_s

Создать временное имя файла

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

ungetc, ungetwc

Отправить символ обратно в поток

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

_vcprintf, _vcwprintf, _vcprintf_s, _vcprintf_s_l, _vcwprintf_s, _vcwprintf_s_l

Записать форматированные данные на консоль.

System::Console::Write

vfprintf, vfwprintf, vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l

Записать форматированные данные в поток

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

vprintf, vwprintf, vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l

Записать форматированные данные в stdout

System::Console::Write

_vsnprintf, _vsnwprintf, vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l

Записать форматированные данные указанной длины в буфер

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

vsprintf, vswprintf, vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l

Записать форматированные данные в буфер

System::String::Format

Когда программа начинает выполнение, код запуска автоматически открывает несколько потоков: стандартный ввода (указанный в stdin), стандартный вывода (указанный в stdout) и стандартный вывода ошибок (указанной в stderr). Эти потоки направляются на консоль (клавиатуру и экран) по умолчанию. Используйте freopen для перенаправления stdin, stdout или stderr к дисковому файлу или устройству.

Файлы, открытые с помощью процедуры потока буферизуются по умолчанию. Функции stdout и stderr сбрасываются, когда они полны или, при записи в символьное устройство, после каждого вызова библиотеки. Если программа завершается ненормально, буферы вывода не могут быть сброшены, что приводит к потере данных. Используйте fflush или _flushall, чтобы гарантировать, что буфер, связанный с заданным файлом или все открытые буферы сброшены операционной системе, которая может кэшировать данные перед записью их на диск. Функция фиксации на диск гарантирует, что сброшенное содержимое буфера не потеряется в случае сбоя системы.

Существует два способа сохранить содержимое буфера на диск:

  • Скомпонуйте с файлом COMMODE.OBJ, чтобы установить глобальный флаг фиксации. Параметр по умолчанию глобального флага — n, означающий "не фиксировать".

  • Установите флаг в c для fopen или _fdopen.

Любой файл, открытый с флагом c или n ведет себя в соответствии со значением флага, независимо от состояния глобального флага фиксации.

Если программа не закрывает поток явно, поток автоматически закроется, когда завершится выполнение программы. Однако необходимо закрывать поток, когда программа завершает работу с ним, так как число потоков, которые могут быть открыты одновременно, ограничено. Дополнительные сведения об этом ограничении смотрите в разделе _setmaxstdio.

Ввод может следовать сразу за выводом только с использованием между ними вызова fflush или функции позиционирования файлов (fseek, fsetpos или rewind). Вывод может следовать за вводом без дополнительного вызова функции позиционирования файла, если операция ввода встречает конец файла.

См. также

Ссылки

Ввод и вывод

Процедуры среды выполнения по категориям