Cplusplus 简明教程
C++ Basic Input/Output
C 标准库提供了一套广泛的输入/输出功能,我们将在随后的章节中看到。本章将讨论 C 语言编程所需的非常基础且最常用的 I/O 操作。
C++ I/O 发生在流中,流是字节序列。如果字节从键盘、磁盘驱动器或网络连接等设备流向主存储器,则称为 input operation ;如果字节从主存储器流向显示屏、打印机、磁盘驱动器或网络连接等设备,则称为 output operation 。
I/O Library Header Files
以下标头文件对 C++ 程序很重要:
Sr.No |
标头文件和函数及说明 |
1 |
<iostream> 这个文件定义了 cin, cout, cerr 和 clog 对象,它们分别对应于标准输入流、标准输出流、无缓冲标准错误流和带缓冲标准错误流。 |
2 |
<iomanip> 此文件声明了使用所谓的参数化流操纵器执行格式化 I/O 的有用的服务,例如 setw 和 setprecision 。 |
3 |
<fstream> 此文件声明了用户控制文件处理的服务。我们将在文件和流相关章节中详细讨论它。 |
The Standard Output Stream (cout)
预定义对象 cout 是 ostream 类的实例。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++ 编译器还确定输出变量的数据类型,并选择适当的流插入运算符来显示值。<< 运算符重载为显示内建类型整数、浮点数、双精度数、字符串和指针值的数据项。
插入运算符 << 可以在单个语句中使用多次,如上所示,而 endl 用于在行的末尾添加新行。
The Standard Input Stream (cin)
预定义对象 cin 是 istream 类的实例。cin 对象被认为附加到标准输入设备,它通常是键盘。 cin 与流提取运算符结合使用,它写成 >>,是两个大于号,如以下示例所示。
#include <iostream>
using namespace std;
int main() {
char name[50];
cout << "Please enter your name: ";
cin >> name;
cout << "Your name is: " << name << endl;
}
当上述代码被编译并执行时,它将提示您输入一个名称。您输入一个值,然后按回车键查看以下结果 −
Please enter your name: cplusplus
Your name is: cplusplus
C++ 编译器还确定输入值的数据类型,并选择适当的流提取运算符来提取值并将其存储在给定的变量中。
流提取运算符 >> 可以在单个语句中使用多次。若要请求多个数据项,则可以使用以下内容 −
cin >> name >> age;
这与以下两个语句等效 −
cin >> name;
cin >> age;
The Standard Error Stream (cerr)
预定义对象 cerr 是 ostream 类的实例。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....
The Standard Log Stream (clog)
预定义对象 clog 是 ostream 类的实例。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。