Share via


流 I/O

这些函数处理数据不同的大小和格式,从单个字符大到数据结构。 它们还提供缓冲,这样可以提高性能。 流缓冲区的默认大小是 4K。 运行库程序中创建的类型库只影响这些例程缓冲区,并且对操作系统创建的缓冲区中没有作用。

流 I/O 例程

例程

使用

.NET Framework 等效项

clearerr, clearerr_s

流进行全面的错误指示器

不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例

关闭 。

关闭流

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::ReadLineSystem::IO::TextReader::ReadBlock

_fileno

获取文件说明符与流

System::IO::FileStream::Handle

_flushall

刷新所有流向缓冲区或存储设备

System::IO::FileStream::FlushSystem::IO::StreamWriter::FlushSystem::IO::TextWriter::FlushSystem::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,fwscanffscanf_s、_fscanf_s_l、fwscanf_s、_fwscanf_s_l

从流中读取格式化数据。

System::IO::StreamReader::ReadLine;参见 Parse 方法,如 System::Double::Parse

fseek、_fseeki64

移到文件位置的位置

System::IO::FileStream::PositionSystem::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

返回允许在 I/O 流级同时打开的文件数。

不适用。 若要调用标准 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

设置同时打开文件的数量最大数目级流 I/O。

不适用。 若要调用标准 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,swprintfsprintf_s、_sprintf_s_l、swprintf_s、_swprintf_s_l

将设置格式的数据写入字符串。

System::String::Format

sscanf,swscanfsscanf_s、_sscanf_s_l、swscanf_s、_swscanf_s_l

从字符串中读取格式化数据。

请参见 Parse 方法,如 System::Double::Parse

_tempnam, _wtempnam

生成在特定目录的临时文件名

不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例

tmpfile, tmpfile_s

创建临时文件

不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例

tmpnam,_wtmpnamtmpnam_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,vfwprintfvfprintf_s、_vfprintf_s_l、vfwprintf_s、_vfwprintf_s_l

将设置格式的数据写入流。

不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例

vprintf,vwprintfvprintf_s、_vprintf_s_l、vwprintf_s、_vwprintf_s_l

将设置格式的数据写入stdout

System::Console::Write

_vsnprintf,_vsnwprintfvsnprintf_s、_vsnprintf_s、_vsnprintf_s_l、_vsnwprintf_s、_vsnwprintf_s_l

写入指定长度的格式化数据到缓冲区

不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例

vsprintf,vswprintfvsprintf_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。

无论全局 commit/no 提交的状态,所有文件尤其打开使用 c 或 n 标志根据标志行为。

如果程序不显式关闭了流,流自动关闭,在程序停止时。 但是,在程序完成时应关闭流,与其为可以打开一次是有限流的数量。 有关此限制的信息,请参见 _setmaxstdio

项只能直接输出按照用介入的调用 fflush 或向文件位置函数 (fseek、fsetpos或 rewind)。 输出项可以按照不带干预调用的文件位置函数输入操作是否遇到文件结束。

请参见

参考

输入和输出

按类别分的运行时例程