C++ 标准库提供了一组丰富的输入/输出功能,我们将在后续的章节进行介绍。本章将讨论 C++ 编程中最基本和最常见的 I/O 操作。

C++ 的 I/O 发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作

I/O 库头文件

下列的头文件在 C++ 编程中很重要。

头文件 函数和描述
<iostream> 该文件定义了 cin、cout、cerrclog 对象,分别对应于标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流。
<iomanip> 该文件通过所谓的参数化的流操纵器(比如 setwsetprecision),来声明对执行标准化 I/O 有用的服务。
<fstream> 该文件为用户控制的文件处理声明服务。我们将在文件和流的相关章节讨论它的细节。

标准输出流(cout)

预定义的对象 coutiostream 类的一个实例。cout 对象"连接"到标准输出设备,通常是显示屏。cout 是与流插入运算符 << 结合使用的,如下所示:

#include <iostream>using namespace std;int main( )
{char str[] = "Hello C++";cout << "Value of str is : " << str << endl;
}

当上面的代码被编译和执行时,它会产生下列结果:

Value of str is : Hello C++

C++ 编译器根据要输出变量的数据类型,选择合适的流插入运算符来显示值。<< 运算符被重载来输出内置类型(整型、浮点型、double 型、字符串和指针)的数据项。

流插入运算符 << 在一个语句中可以多次使用,如上面实例中所示,endl 用于在行末添加一个换行符。

标准输入流(cin)

预定义的对象 ciniostream 类的一个实例。cin 对象附属到标准输入设备,通常是键盘。cin 是与流提取运算符 >> 结合使用的,如下所示:

#include <iostream>using namespace std;int main( )
{char name[50];cout << "请输入您的名称: ";cin >> name;cout << "您的名称是: " << name << endl;}

当上面的代码被编译和执行时,它会提示用户输入名称。当用户输入一个值,并按回车键,就会看到下列结果:

请输入您的名称: cplusplus
您的名称是: cplusplus

C++ 编译器根据要输入值的数据类型,选择合适的流提取运算符来提取值,并把它存储在给定的变量中。

流提取运算符 >> 在一个语句中可以多次使用,如果要求输入多个数据,可以使用如下语句:

cin >> name >> age;

这相当于下面两个语句:

cin >> name;
cin >> age;

标准错误流(cerr)

预定义的对象 cerriostream 类的一个实例。cerr 对象附属到标准错误设备,通常也是显示屏,但是 cerr 对象是非缓冲的,且每个流插入到 cerr 都会立即输出。

cerr 也是与流插入运算符 << 结合使用的,如下所示:

#include <iostream>using namespace std;int main( )
{char str[] = "Unable to read....";cerr << "Error message : " << str << endl;
}

当上面的代码被编译和执行时,它会产生下列结果:

Error message : Unable to read....

标准日志流(clog)

预定义的对象 clogiostream 类的一个实例。clog 对象附属到标准错误设备,通常也是显示屏,但是 clog 对象是缓冲的。这意味着每个流插入到 clog 都会先存储在缓冲在,直到缓冲填满或者缓冲区刷新时才会输出。

clog 也是与流插入运算符 << 结合使用的,如下所示:

#include <iostream>using namespace std;int main( )
{char str[] = "Unable to read....";clog << "Error message : " << str << endl;
}

当上面的代码被编译和执行时,它会产生下列结果:

Error message : Unable to read....

通过这些小实例,我们无法区分 cout、cerr 和 clog 的差异,但在编写和执行大型程序时,它们之间的差异就变得非常明显。所以良好的编程实践告诉我们,使用 cerr 流来显示错误消息,而其他的日志消息则使用 clog 流来输出。

C++ 标准输入,标准输出,标准错误和标准日志相关推荐

  1. dup、dup2实现文件描述符重定向(标准输入、标准输出、标准错误输出)

    目录 dup函数 dup2函数 重定向标准输入 重定向标准输出 重定向标准错误输出 重定向恢复 总结 在前文中,可以知道,文件描述符实际上是指向文件表项的指针数组索引,也就相当于每个文件描述符都对应一 ...

  2. linux 的错误输出黑洞,Linux的标准输出、标准错误输出、nohup

    1.在bash中标准输出可以用1来表示:通常来说这个1可以省略: 如./xxx >/dev/null 和 ./xxx 1>/dev/null 是一个意思 2.在bash中标准错误输出可以用 ...

  3. 【Linux】21.Linux输入输出重定向、2>1、标准输入、标准输出、标准错误

    输入输出重定向.2>&1.标准输入.标准输出.标准错误 https://zhuanlan.zhihu.com/p/47765176 ./test.sh > log.txt 2> ...

  4. python标准输入输出用来干什么_python 以标准输出(sys.stdout)为例,看python的标准输入、标准错误输出...

    标准输出(sys.stdout)对应的操作就是print(打印)了,标准输入(sys.stdin)则对应input(接收输入)操作,标准错误输出和标准输出类似也是print(打印). python最基 ...

  5. pythonsys标准_python 以标准输出(sys.stdout)为例,看python的标准输入、标准错误输出...

    标准输出(sys.stdout)对应的操作就是print(打印)了,标准输入(sys.stdin)则对应input(接收输入)操作,标准错误输出和标准输出类似也是print(打印). python最基 ...

  6. Shell:标准输入(stdin)、标准输出(stdout)、标准错误输出(stderr)介绍

    UNIX系统shell使用 1.文件描述符0与进程的标准输入(一般是键盘)相关联: 2.文件描述符1与标准输出(一般是显示器)相关联: 3.文件描述符2与标准出错输出(一般是显示器)相关联 1.输出 ...

  7. 标准输入,标准输出和标准错误

    当我们使用文件描述符进行操作时,需要操作标准输入.标准输出.标准错误,可以包含如下头文件: #include <unistd.h> 这个头文件中定义了标准设备: /* Standard f ...

  8. Linux的标准输入、标准输出和标准错误

    Linux的标准输入.标准输出和标准错误 什么是文件描述符? 文件描述符是一个简单的正整数,用以标明每一个被进程所打开的文件和socket. 最前面的三个文件描述符(0,1,2)分别与标准输入(std ...

  9. Linux的标准输出 标准错误 标准输入 重定向

    标准输入(STDIN)-0 默认接受来自键盘的输入 标准输出(STDOUT)-1 默认输出到终端窗口 标准错误(STDERR)-2 默认输出到终端窗口 > 把STDOUT重定向到文件 2> ...

最新文章

  1. 错误名称:EntityCommandExecutionException
  2. .net中语音识别和语音合成(二)语音合成提高篇
  3. ASP.NET中前台javascript与后台代码调用
  4. C#中String对象转换为Font对象的方法
  5. python3 ftplib_ftplib — FTP protocol client
  6. Ubuntu下apt-get方式Git的安装、配置和更新
  7. mysql表还原初始状态_workbench 怎么恢复初始设置
  8. 主构造器和附属构造器
  9. 拟合三维点平面matlab程序
  10. c语言mooc第五周作业,中国大学MOOC 浙江大学《程序设计入门——C语言》第5周:循环控制 测验与作业...
  11. 海康rtsp抓包分析
  12. java的常量池的大小,Java 常量池注意点
  13. 超市扫码器应该怎么使用
  14. 反激变换器的变压器设计
  15. 谷歌浏览器启动页被篡改为hao.7654.com的解决办法
  16. 计算机切换用户界面键,电脑如何切换屏幕_电脑怎么切换另一个界面快捷键
  17. 七自由度冗余机械臂运动学逆解与工作空间分析MATLAB实现
  18. 运维之DNS服务器Bind9配置解析和基础示例及附带命令
  19. 关于stm32的VCP技术原理
  20. 十二、阿里云 maven 配置

热门文章

  1. 按位与、按位或、按位异或、按位取反、按位左移、按位右移
  2. 大专计算机专业可以在职研究生吗,专科可以报考西安邮电大学计算机在职研究生吗?...
  3. C语言中const关键字的用法
  4. 谈谈你对Spring的理解?
  5. 双指缩放canvas图片_移动端 图片手势控制 双指缩放 单指移动
  6. mipi dsi csi 之间的区别
  7. 实战游戏项目管理4-线上管理篇
  8. Python timeit 模块详解(准确测量小段代码的执行时间)
  9. 弘辽科技:抖音小店功效虚假宣传行为有哪些?
  10. theamleaf中radio如何默认选中