在那个网站做推广实用,上海网站搜索优化,html零基础教程,移动网站建设学习【C】标准库 IO 查漏补缺 文章目录 系统I/O1. 概述2. cout 与 cerr3. cerr 和 clog4. 缓冲区5. 与 printf 的比较 系统I/O
1. 概述
标准库提供的 IO 接口#xff0c;包含在 iostream 文件中
输入流: cin输出流#xff1a;cout / cerr / clog。
输入流只有一个 cin#x…【C】标准库 IO 查漏补缺 文章目录 系统I/O1. 概述2. cout 与 cerr3. cerr 和 clog4. 缓冲区5. 与 printf 的比较 系统I/O
1. 概述
标准库提供的 IO 接口包含在 iostream 文件中
输入流: cin输出流cout / cerr / clog。
输入流只有一个 cin而输出流有三个 cout / cerr / clog这些输出流有什么区别呢
输出流的主要区别有两个
输出目标不同是否刷新缓冲区
2. cout 与 cerr
首先 cout 和 cerr 的输出目标不同若程序重定向到文件则会分别输出在不同的文件里。
编写如下程序
#include iostream
using namespace std;
int main()
{cout output to cout endl;cerr output to cerr endl;return 0;
}执行
./testio txt1 2 txt23. cerr 和 clog
cerr 和 clog 区别是否立即刷新缓冲区两者都是同一个输出目标
#include iostream
using namespace std;
int main()
{cout output to cout endl;cerr output to cerr endl;clog output to clog endl;return 0;
}再次执行
./testio txt1 2 txt2可以看到 cerr和clog在同一个文件中
4. 缓冲区
缓冲区是内存的一部分输出的东西先存入缓冲区缓冲区满了再输出程序操作内存速度要快一些从而达到比较高的执行效率。
cerr 会立即刷新缓冲区从而在程序错误异常崩溃时能够及时看到错误。
std::flush 或者 std::endl 用于在执行到此行语句时立即刷新缓冲区。 因此过度的使用这两个会拖慢进程所以仅在必要时使用 std::flush 或 std::endl 来立即刷新缓冲区。
关于 std 这是一个命名空间 standard C 标准库
5. 与 printf 的比较
printf 比较直观一目了然cout 有很多 而且拼字符串有可能拼错
int x 10;
std::cout I have x apples\n;
printf(I have %d apples\n, x);但 printf 容易出错cout 不容易出错
float x 10;
std::cout I have x apples;
printf(I have %d apples\n, x);此处占位符出错便无法进行正确的输出占位符必须匹配正确
C20 格式化
auto s1 {format(read {} bytes from {}, 100, file.txt)};目前编译器都不是支持的特别好。