iostream库简介
iostream库包含两个基本基础类型istream和ostream,分别表示输入流和输出流。
一个流就是一个字符序列,是从IO设备读出或写入IO设备的。
istream类型对象和ostream类型对象
标准库iostream定义了4个IO对象,分别为:
- istream类型对象cin:
- 为了处理输入,我们使用一个名为cin的istream类型对象,这个对象也被称为标准输入。
- ostream类型对象cout、cerr、clog:
- 为了处理输出,我们使用一个名为cout的ostream类型对象,这个对象也被称为标准输出。
- 名为cerr的ostream类型对象被称为标准错误,通常用来输出警告和错误消息。
- 名为clog的ostream类型对象则用来输出程序运行时的一般性信息。
系统通常将程序所运行的窗口与这些对象关联起来。因此,
- 当我们读取cin,数据将从程序正在运行的窗口读入。
- 当我们向cout、cerr、clog写入数据时,将会写到同一个窗口。
输入运算符和输出运算符
输出运算符<<
输出运算符<<接受两个运算对象:左侧运算对象必须是一个ostream类型对象,右侧的运算对象是要打印的值。
输出运算符<<将给定的值写到给定的ostream类型对象中。
输出运算符<<的计算结果就是其左侧运算对象,即计算结果就是我们写入给定值的那个ostream类型对象。
由于输出运算符<<的计算结果就是其左侧运算对象,所以我们可以将一系列输出请求合并到单一语句中。
cout << "Enter two number:" << endl;
等价于
cout << "Enter two number:";
cout << endl;
输入运算符>>
输入运算符>>接受两个运算对象:左侧运算对象必须是一个istream类型对象,右侧的运算对象是一个普通对象。
输入运算符>>从给定的istream类型对象读入数据,并存入给定对象中。
输入运算符>>的计算结果就是其左侧运算对象。
由于输入运算符>>的计算结果就是其左侧运算对象,所以我们可以将一系列输入请求合并到单一语句中。
cin >> v1 >> v2;
等价于
cin >> v1;
cin >> v2;
getline函数
由于,在执行读操作时,string对象会自动忽略开头的空白(空格符,换行符,制表符等)并从第一个真正的字符开始读起,直到遇见下一处空白。
有时候,我们希望能在最终得到的字符串中保留输入的空白符,这时应该用getline函数代替原来的输入运算符>>。
getline函数的参数是一个输入流和一个string对象,函数从给定的输入流中读入内容,直到遇到换行符为止(换行符也被读进来了),然后把所读到的内容存入那个string对象中去(注意不存换行符)。
getline函数只要一遇到换行符就结束读取操作并返回结果,哪怕输入的一开始就是换行符也是如此,此时结果是个空string。
string line;
while (getline(cin , line))
{
cout << line << endl;
}
return 0;
示例demo
cout << "Enter two number : " << endl;
int v1 = 0 , v2 = 0;
cin >> v1 >> v2;
cout << "The sum of " << v1 << " and " << v2 << " is " << v1 + v2 << endl;
return 0;