怎样输入输出?
C++标准库提供了一组广泛的输入/输出功能,我们将在后续章节中看到。本章将讨论C++编程所需的非常基本和最常见的I / O操作。
C++ I / O发生在流中,这是字节序列。如果字节从键盘,磁盘驱动器或网络连接等设备流向主存储器,则称为输入操作,如果字节从主存储器流向显示屏,打印机,磁盘驱动器等设备或者网络连接等,这称为输出操作。
I / O的头文件
以下头文件对C++程序很重要
类型 | 描述 |
此文件定义分别对应于标准输入流、标准输出流、未缓冲标准错误流和缓冲标准错误流的 cin、cout、cerr 和clog。 | |
此文件声明服务可用于使用所谓的参数化流操纵器(如 setw 和 setprecision)执行格式化的 I/O。 | |
此文件声明用于用户控制的文件处理的服务。 |
标准输出流(cout)
预定义对象cout是ostream类的实例。cout对象被称为“连接”标准输出设备,通常是显示屏。的cout用于在结合流插入操作员,其被写为'<<'其比迹象少两个如示于下述的例子。
1 #include2 using namespace std; 3 int main() { 4 char str[] = "Hello C++"; 5 cout << "Value of str is : " << str << endl; 6 }
编译并执行上述代码时,会产生以下结果
1 Value of str is : Hello C++
C++编译器还确定要输出的变量的数据类型,并选择适当的流插入运算符来显示该值。<<运算符被重载以输出内置类型的数据项integer,float,double,strings和pointer值。
插入运算符<<可以在单个语句中多次使用,如上所示,endl用于在行的末尾添加换行符。
标准输入流(cin)
预定义对象 cin 是 istream 类的实例。cin 对象表示连接到标准输入设备,通常为键盘。cin 与流提取运算符结合使用,该运算符被写入 '>>',这比以下示例所示的符号大于两个符号。
1 #include2 using namespace std; 3 int main() { 4 char name[50]; 5 cout << "Please enter your name: "; 6 cin >> name; 7 cout << "Your name is: " << name << endl; 8 }
编译并执行上述代码时,将提示您输入名称。输入一个值,然后按Enter键以查看以下结果
1 Please enter your name: cplusplus 2 Your name is: cplusplus
C++编译器还确定输入值的数据类型,并选择适当的流提取运算符以提取值并将其存储在给定变量中。
流提取运算符>>可以在单个语句中使用多次。要请求多个数据,您可以使用以下内容
1 cin >> name >> age;
这相当于以下两个陈述
1 cin >> name; 2 cin >> age;
标准错误流(cerr)
预定义对象cerr是ostream类的实例。cerr对象被称为附加到标准错误设备,它也是一个显示屏,但是对象cerr是非缓冲的,每个流插入到cerr会导致其输出立即出现。
所述CERR也与流插入操作一起使用如示于下述的例子。
1 #include2 using namespace std; 3 int main() { 4 char str[] = "Unable to read...."; 5 cerr << "Error message : " << str << endl; 6 }
编译并执行上述代码时,会产生以下结果
1 Error message : Unable to read....
标准日志流(clog)
预定义对象clog是ostream类的实例。据说clog对象附加到标准错误设备,标准错误设备也是显示屏,但缓冲了对象clog。这意味着每次插入clog都可能导致其输出保持在缓冲区中,直到填充缓冲区或刷新缓冲区为止。
的堵塞也与流插入操作一起使用如示于下述的例子。
1 #include2 using namespace std; 3 int main() 4 { 5 char str[] = "Unable to read...."; 6 clog << "Error message : " << str << endl; 7 }
编译并执行上述代码时,会产生以下结果
1 Error message : Unable to read....
你可能无法看到cout,cerr和clog与这些小例子有任何区别,但在编写和执行大程序时,差异变得明显。因此,最好使用cerr流显示错误消息,并在显示其他日志消息时应使用clog。
For English visitors, please click here