1.开始
1.1 初识输入与输出(iostream库)
1.1.1 标准输入:cin
1.1.2 标准输出:count
1.1.3 标准错误:cerr(输出警告和错误信息)
1.1.4 clog(输出程序运行时的一般信息)
例:
#include <iostream>
intmain() {
std::cout<<"Enter two number:"<<std::endl;
intv1=0,v2=0;
std::cin>>v1>>v2;
std::cout<<"The sum of "<<v1<<" and "<<v2
<<" is "<<v1+v2<<std::endl;
return0;
}
第一行为头文件
第四行:
“<<(输出运算符)”: 其左侧必须为ostream,右侧的运算对象是要打印的值,表示将右侧给定值写到给定的ostream中。
“endl”:称为操纵符。写入endl的效果是结束当前行,并将与设备关联的缓冲区中的内容刷到设备中。
缓冲操作可保证到目前为止程序所产生的所有输出都真正写入输出流,而不仅仅停留在内存中等待写入流
相当于:
std::cout<<"Enter two number:";
std::cout<<std::endl
“ std:: ”:指出名字cout和endl是定义在名为std的命名空间中的
命名空间可以帮助我们避免不经意的名字定义冲突,以及使用库中相同名字导致的冲突
标准库定义的所有名字都在命名空间std中
第三章中将给出更简单的访问标准库中名字的方法
第五行:定义两个变量来保存输入
第六行:
“ >>(输入运算符) ”:其左侧为istream运算对象,右侧为运算对象。表示从给定的istream读入数据,并存入给定的对象中
相当于:
std::cin>>v1;
std::cin>>v2;
打印结果
1.2 C++注释
1.2.1 单行注释:以双斜线(//)开始,以换行符结束
1.2.2 界定符:以 ”/”开始,以“/“结束
注释界定符不能嵌套
例:
#include <iostream>
/*
* 简单主函数
* 读取两个数,求他们的和
*/
intmain() {
// 提示用户输入两个数
std::cout<<"Enter two number:"<<std::endl;
intv1=0,v2=0; // 保存我们读入的输入数据的变量
std::cin>>v1>>v2; // 读取输入数据
std::cout<<"The sum of "<<v1<<" and "<<v2
<<" is "<<v1+v2<<std::endl;
return0;
}
1.4 控制流
1.4.1 while语句
执行一段代码,直至给定条件为假为止。
例:
#include<iostream>
intmain()
{
intsum=0,val=1;
while( val<=10)
{
sum+=val;
val++;
}
std::cout<<"Sum of 1 to 10 inclusive is "<<sum<<std::endl;
return0;
}
1.4.2 for语句
在循环体中检测变量,在循环体中递增变量的模式非常频繁,因此定义for语句
例:
#include<iostream>
intmain()
{
intsum=0,val=1;
for(val=1;val<=10;val++)
{
sum+=val;
}
std::cout<<"Sum of 1 to 10 inclusive is "<<sum<<std::endl;
return0;
}
1.4.3 读取数量不定的输入数据
实现对用户输入的一组数求和。在这种情况下,预先不知道要对多少个数求和。
例:
#include<iostream>
intmain()
{
intsum=0,value=0;
while(std::cin>>value)
{
sum+=value;
}
std::cout<<"Sum is "<<value<<std::endl;
return0;
}
当我们使用一个istream对象作为条件时,其效果是检测流的状态。如果流是有效的,那么检测成功。当遇到文件结束,或遇到一个无效输入时,istream状态变为无效。处于无效状态的istream对象会使条件别为假。
当从键盘向程序输入数据时,对于如何指出文件结束,不同操作系统有不同的约定
windows:Ctrl+Z,然后按Enter或Return
UNIX 和 Mac OS K:Ctrl+D
1.4.4 if 语句
例:
#include<iostream>
intmain()
{
intcnt=1,currval=0,val=0;
if(std::cin>>currval)
{
while(std::cin>>val)
{
if(val==currval)
cnt++;
else
{
std::cout<<currval<<"occurs"<<cnt<<"times"<<std::endl;
currval=val;
cnt=1;
}
std::cout<<currval<<"occurs"<<cnt<<"times"<<std::endl;
}
}
return0;
}
1.5 类简介
每一个类实际上都定义了一个新类型,其类型名就是类名。
调用一个名为isbn的函数从一个Sales_item对象中提取ISBN书号
用 “>>” 和 “<<” 读,写Sales_item类型的对象
用 ”=“将一个Sales_item对象赋予另一个Sales_item对象
用”+“将两个Sales_item对象相加
使用复合赋值运算符(+=)将一个Sales_item对象加到另一个对象上
1.5.1 Sales_item 类
例:
#include<iostream>
#include "Sales_item.h"
int main()
{
Sales_item item1,item2;
std::cin >> item1 >> item2;
std::cout << item1 + item2 << std::endl;
return 0;
}
1.5.2 初识函数成员
例:
#include<iostream>
#include "Sales_item_h"
int main()
{
Sales_item item1,item2;
std::cin >> item1 >> item2;
if(item1.isbn() == item1.isbn())
{
std::cout << item1 + item2 << std::endl;
return 0;
}
else
{
std::cerr << "Data must refer to same ISBN" << std::endl;
return -1; // 表示失败
}
}
成员函数:定义为类的一部分函数(也成为方法)
使用点运算符(.):名为item1的对象的isbn成员
调用运算符(()):调用一个函数