使用IO库来扩充main程序,输出它们的和。
【例1】求两数之和
#include<iostream>
using namespace std;
int main()
{
std::cout<<"Ender two numbers:"<<std::endl;
int a,b;
std::cin>>a>>b;
std::cout<<"The Sum of "<<a<<" and "<<b<<" is "<<a + b<<std::endl;
return 0;
}
1.C++并没有直接定义输入和输出(IO)的任何语句,这种功能是由标准库iostream提供,iostream库的基础是两种命名为istream 和 ostream的类型,分别表示输入流和输出流。流是指从某种IO设备上读入或写入的字符序列。
2.标准输入与输出对象:
标准库定义了4个IO对象。处理输入时使用命名为cin的istream类型对象,这个对象也成为标准输入。处理输出时使用命名为cout的ostream类型对象,这个对象也成为标准输出。标准库还定义了另外两个ostream对象,分别为cerr 和 clog,cerr对象又叫做标准错误,通常用来输出警告和错误信息,clog对象用于产生程序的一般信息。
一般情况下,系统将这些对象与执行程序的窗口联系起来,这样,当我们从cin读入时,数据从执行程序的窗口读入,当写到cout、cerr、或clog时,输出至同一窗口。运行程序时,大部分操作系统都提供了重定向输入或输出流的方法,利用重定向可以将这些流与所选择的文件联系起来。
3.
#include<iostream>
是告诉编译器要使用iostream库。尖括号里的名字是一个头文件。程序使用库工具时必须包含相关的头文件。#include指示必须单独写成一行——头文件名和#include指示都在头文件开头部分出现。
4.写入到流:
main函数体中第一条语句执行了一个表达式。C++中,一个表达式由一个或几个操作数和通常时一个操作符组成。该语句的表达式使用输出操作符(<<操作符)。
std::cout<<"Enter two numbers:"<<std::endl;
这个语句用了两次输出操作符,每个操作符实例都接受两个操作数:左操作数必须是ostream对象;右操作数是要输出的值。
5.使用标准库中的名字:
前缀std::表明cout和endl是定义在命名空间(namespace)std中的。使用命名空间,可以避免由于无意中使用了与库中所定义名字相同的名字而引起冲突,因此标准库定义的名字是在定义在命名空间中,所以可以按自己的意图使用相同的名字。
标准库使用命名空间的副作用:当使用标准库中的名字时,必须显式地表达出使用地是命名空间std下的名字。std::cout的写法使用了作用域操作符(scope operator,::操作符),表示使用的是定义在命名空间std 中的 cout。
6.读入流:
在输出提示语后,将读入用户输入的数据,先定义两个名为a和b的变量(variable)来保存输入: int a,b;
将这些变量定义为int类型,int类型是一种代表整数型的内置类型。这些变量未初始化(uninitialized),表示没有赋给它们初始值,这些变量在首次使用时会读入一个值,因此没有初始值。
读取输入语句为:std::cin>>a>>b;
输入操作符(>>操作符)行为与输出操作符相似。它接受一个istream对象作为其左操作数,接受一个对象作为其右操作数,它从istream操作数读取数据并保存到右操作数中。像输出操作符一样,输入操作符返回其左操作数作为结果。
等同于:
std::cin>>a;
std::cin>>b;
输入操作的效果是从标准输入读取两个值,将第一个放在a中,第二个放在b中。