C++标准库提供一套广泛的输入/输出功能,我们将在后面的章节中看到的。本章将讨论所需的C++编程非常基本的,最常见的I/O操作。
C++ 的I/O发生在流,这是字节序列。如果字节从设备流向如键盘,磁盘驱动器,或网络连接等,以主存储器,这就是所谓的输入操作,如果字节从主存储器流到设备等的显示屏幕,打印机,磁盘驱动器或网络连接等等,这就是所谓的输出操作。
I/O库头文件:
在C++程序中有以下很重要的头文件:
头文件 | 函数和描述 |
---|---|
<iostream> | 此文件定义cin, cout, cerr 和 clog 对象,分别对应于标准输入流,标准输出流中,无缓冲标准错误流和缓冲标准错误流 |
<iomanip> | 该文件声明服务,所谓的参数化流操纵,如setw和setprecision进行格式化I/O |
<fstream> | 该文件声明服务用户控制文件处理。我们将详细的文件一下讨论和Stream相关章节 |
标准输出流 (cout):
预定义的对象cout是ostream的类的实例。该cout对象被说成是“连接到”标准输出设备,这通常是在显示屏幕上。 cout用于在结合流插入操作符,它被写成<< ,如下例少于2标志。
#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用来添加新的行,写在当行的末尾。
标准输入流 (cin):
预定义对象cin 是istream类的一个实例。cin对象被认为是连接到标准输入设备,这通常是键盘。cin用于与流提取运算符,它被写成>>所示在下面的例子是比标志大2。
#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;
标准错误流(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....
标准的日志流(clog):
预定义的对象clog是ostream 类的一个实例。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。