C ++基本输入/输出

C ++标准库提供了一组广泛的输入/输出功能,我们将在后续章节中看到.本章将讨论C ++编程所需的非常基本和最常见的I/O操作.

C ++ I/O发生在流中,即字节序列.如果字节从键盘,磁盘驱动器或网络连接等设备流向主存储器,则称为输入操作,如果字节从主存储器流向显示屏等设备,打印机,磁盘驱动器或网络连接等,这称为输出操作.

I/O库头文件

以下是对C ++程序很重要的头文件 :

Sr.NoHeader File&功能和描述
1

< iostream>

此文件定义了 cin,cout,cerr clog 对象,它们对应标准输入流,标准输出流,未缓冲的标准错误流和缓冲的标准错误流.

2

< iomanip>

这file声明用于执行带有所谓的参数化流操纵器的格式化I/O的服务,例如 setw setprecision .

3

< fstream>

此文件声明用于用户控制的文件处理的服务.我们将在文件和流相关章节中详细讨论它.

标准输出流( 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 ++编译器还确定要输出的变量的数据类型并选择适当的流插入运算符以显示该值. <<<运算符重载以输出内置类型的数据项integer,float,double,strings和pointer值.

插入运算符<<可以在单个语句中多次使用,如上所示, endl 用于在行尾添加换行符.

标准输入流(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;
 
}

编译并执行上述代码时,会提示您输入名称.您输入一个值,然后按Enter键以查看以下结果 :

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都可能导致其输出保持在缓冲区中,直到填充缓冲区或刷新缓冲区为止.

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.