流 I/O
这些函数处理数据不同的大小和格式,从单个字符大到数据结构。 它们还提供缓冲,这样可以提高性能。 流缓冲区的默认大小是 4K。 运行库程序中创建的类型库只影响这些例程缓冲区,并且对操作系统创建的缓冲区中没有作用。
流 I/O 例程
例程 |
使用 |
.NET Framework 等效项 |
---|---|---|
流进行全面的错误指示器 |
不适用。 若要调用标准 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 |
|
结束所有多余 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 |
|
与流与打开文件说明符 |
||
文件尾流的测试 |
||
错误流的测试。 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
刷新流向缓冲区或存储设备 |
||
从流 ( getc 和 getwc的函数版本) 中读取字符 |
||
来自 stdin ( getchar 和 getwchar的函数版本) 中读取字符 |
||
获取流位置指示器 |
||
从流读取字符串 |
System::IO::StreamReader::ReadLine,System::IO::TextReader::ReadBlock |
|
获取文件说明符与流 |
||
刷新所有流向缓冲区或存储设备 |
System::IO::FileStream::Flush,System::IO::StreamWriter::Flush,System::IO::TextWriter::Flush,System::IO::BinaryWriter::Flush |
|
打开流 |
||
fprintf、_fprintf_l、fwprintf、_fwprintf_l, fprintf_s、_fprintf_s_l、fwprintf_s、_fwprintf_s_l |
将设置格式的数据写入流。 |
|
将字符写入流 ( putc 和 putwc的函数版本) |
||
为 stdout ( putchar 和 putwchar的函数的版本写入字符) |
||
流中写入字符串 |
||
从流中读取非格式化数据。 |
||
分配 FILE 流指向新的设备或文件 |
||
从流中读取格式化数据。 |
System::IO::StreamReader::ReadLine;参见 Parse 方法,如 System::Double::Parse。 |
|
移到文件位置的位置 |
System::IO::FileStream::Position,System::IO::FileStream::Seek |
|
设置流位置指示器 |
||
打开有文件共享的流。 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
获取当前文件位置 |
||
编写无格式的数据项到流 |
||
从流 ( fgetc 和 fgetwc的宏版本) 中读取字符 |
||
来自 stdin ( fgetchar 和 fgetwchar的宏版本) 中读取字符 |
||
返回允许在 I/O 流级同时打开的文件数。 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
从 stdin读取行 |
||
从流中读取二进制文件int |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
printf、_printf_l、wprintf、_wprintf_l,printf_s、_printf_s_l、wprintf_s、_wprintf_s_l |
将设置格式的数据写入stdout |
|
到流 ( fputc 和 fputwc宏版本写入字符) |
||
为 stdout ( fputchar 和 fputwchar的宏版本写入字符) |
||
向流中写入行 |
||
向流中写入二进制文件int |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
移至开始的文件位置匹配流 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
删除 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。 |
控制流缓冲 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
设置同时打开文件的数量最大数目级流 I/O。 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
控制流缓冲和缓冲区大小。 |
不适用。 若要调用标准 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 |
将设置格式的数据写入字符串。 |
|
从字符串中读取格式化数据。 |
请参见 Parse 方法,如 System::Double::Parse |
|
生成在特定目录的临时文件名 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
创建临时文件 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
生成临时文件名 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
推后字符到流。 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
_vcprintf,_vcwprintf,_vcprintf_s、_vcprintf_s_l、_vcwprintf_s、_vcwprintf_s_l |
写入控制台的格式显示数据。 |
|
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 |
|
_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 |
从缓冲区中写入格式化数据。 |
在程序开始执行时,启动代码自动打开多种流标准输入 (指向 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)。 输出项可以按照不带干预调用的文件位置函数输入操作是否遇到文件结束。