C++
编译器支持
独立式和宿主式
语言
标准库
标准库头文件
命名要求
特性测试宏 (C++20)
语言支持库
概念库 (C++20)
诊断库
内存管理库
元编程库 (C++11)
通用工具库
容器库
迭代器库
范围库 (C++20)
算法库
字符串库
文本处理库
数值库
日期和时间库
输入/输出库
文件系统库 (C++17)
并发支持库 (C++11)
执行控制库 (C++26)
技术规范
符号索引
外部库
[编辑] 输入/输出库
I/O 操纵符
打印函数 (C++23)
C 风格 I/O
缓冲区
basic_streambuf
basic_filebuf
basic_stringbuf
basic_spanbuf(C++23)
strstreambuf(C++98/26*)
basic_syncbuf(C++20)
流
抽象
ios_base
basic_ios
basic_istream
basic_ostream
basic_iostream
文件 I/O
basic_ifstream
basic_ofstream
basic_fstream
字符串 I/O
basic_istringstream
basic_ostringstream
basic_stringstream
数组 I/O
basic_ispanstream(C++23)
basic_ospanstream(C++23)
basic_spanstream(C++23)
istrstream(C++98/26*)
ostrstream(C++98/26*)
strstream(C++98/26*)
同步输出
basic_osyncstream(C++20)
类型
streamoff
streamsize
fpos
错误类别接口
iostream_category(C++11)
io_errc(C++11)
[编辑] C 风格 I/O
类型和对象
FILE
fpos_t
stdinstdoutstderr
函数
文件访问
fopen
freopen
fclose
fflush
fwide
setbuf
setvbuf
直接输入/输出
fread
fwrite
无格式输入/输出
fgetcgetc
fgets
fputcputc
fputs
getchar
gets(直到 C++14)
putchar
puts
ungetc
fgetwcgetwc
fgetws
fputwcputwc
fputws
getwchar
putwchar
ungetwc
格式化输入
scanffscanfsscanf
vscanfvfscanfvsscanf(C++11)(C++11)(C++11)
wscanffwscanfswscanf
vwscanfvfwscanfvswscanf(C++11)(C++11)(C++11)
格式化输出
printffprintfsprintfsnprintf(C++11)
vprintfvfprintfvsprintfvsnprintf(C++11)
wprintffwprintfswprintf
vwprintfvfwprintfvswprintf
文件定位
ftell
fgetpos
fseek
fsetpos
rewind
错误处理
clearerr
feof
ferror
perror
文件操作
remove
rename
tmpfile
tmpnam
[编辑]
定义于头文件
#define stdin /* implementation-defined */
(1)
#define stdout /* implementation-defined */
(2)
#define stderr /* implementation-defined */
(3)
预定义了三个文本流。这些流在程序启动时被隐式打开且为无方向的。
1) 与标准输入流关联,用于读取常规输入。在程序启动时,当且仅当可以确定流不引用交互式设备时,该流才会被完全缓冲。
2) 与标准输出流关联,用于写入常规输出。在程序启动时,当且仅当可以确定流不引用交互式设备时,该流才会被完全缓冲。
3) 与标准错误流关联,用于写入诊断输出。在程序启动时,该流不会被完全缓冲。
什么构成交互式设备是实现定义的。
这些宏展开为 std::FILE* 类型的表达式。
[编辑] 说明
虽然 POSIX 没有强制要求,但 UNIX 约定是,如果 stdin 和 stdout 与终端关联,则为行缓冲,而 stderr 是无缓冲的。
这些宏可以展开为可修改的左值。如果修改了任何这些 std::FILE* 左值,则后续对相应流的操作会导致未指定或未定义的行为。
[编辑] 示例
此示例展示了一个类似于 std::printf 的函数。
运行此代码
#include
#include
#include
template
concept IsPrintable = std::integral
int my_printf(char const* const format, IsPrintable auto const ... arguments)
{
return std::fprintf(stdout, format, arguments...);
}
int main(int argv, char*[])
{
my_printf("Strings and chars:\t%s %c\n", "hello", 'x');
my_printf("Rounding:\t\t%f %.0f %.32f\n", 1.5, 1.5, 1.3);
my_printf("Padding:\t\t%05.2f %.2f %5.2f\n", 1.5, 1.5, 1.5);
my_printf("Scientific:\t\t%E %e\n", 1.5, 1.5);
my_printf("Hexadecimal:\t\t%a %A 0x%X\n", 1.5, 1.5, &argv);
}
可能的输出
Strings and chars: hello x
Rounding: 1.500000 2 1.30000000000000004440892098500626
Padding: 01.50 1.50 1.50
Scientific: 1.500000E+00 1.500000e+00
Hexadecimal: 0x1.8p+0 0X1.8P+0 0x2CFB41BC
[编辑] 参见
cinwcin
从标准 C 输入流 stdin 读取(全局对象)[编辑]
coutwcout
写入标准 C 输出流 stdout(全局对象)[编辑]
cerrwcerr
写入标准 C 错误流 stderr,无缓冲(全局对象)[编辑]
clogwclog
写入标准 C 错误流 stderr(全局对象)[编辑]
printffprintfsprintfsnprintf(C++11)
将格式化输出打印到 stdout、文件流或缓冲区 (函数) [编辑]
FILE
对象类型,能够保存控制 C I/O 流所需的所有信息 (类型定义) [编辑]
C 文档 关于 stdin, stdout, stderr