C++primer 第1章 快速入门

    添加时间:2013-5-18 点击量:

    [引子]:某书店以文件情势保存每一笔交易。每笔交易记录某本书的发卖景象,含ISBN,发卖册数和发卖单价。每一笔交易形如:


    0-201-70353-x 4 24.99


    第一个元素是ISBN,第二个元素是发卖的册数,最后是发卖单价。雇主按期查看这个文件,统计每本书的发卖册数,总发卖收入以及均匀售价。我们编程来进行策画:


    【须要实现下面几点:】



    1. 定义变量

    2. 实现输入和输出

    3. 定义数据布局来保存处理惩罚的数据

    4. 测试是否两笔记录具有雷同的ISBN

    5. 编写轮回,处理惩罚交易文件中的每一笔记录



     1     #include< iostream>;
    
    2 #includeSales_item.h;
    3 int main()
    4 {
    5 Sales_item total, trans;
    6 //法度将每一个ISBN的数据组合至定名为total的Sales_item对象中。
    7 /从标准输入中读取的每一笔交易将被存储在定名为trans的第二个Sales_item对象中。
    8 每读取一笔新的交易,就将它与total中的Sales_item对象相斗劲,若是含有雷同的ISBN,就更新total;不然就输出total的值,并应用刚读入的交易重置total;/
    9 if(std::cin>>total)
    10 {
    11 while(std::cin>>total)
    12 {
    13 while(std::cin>>trans)
    14 if(total.same_isbn(trans))
    15 total+=trans;
    16 else
    17 {
    18 std::cout<
    19 total=trans;
    20 }
    21 std::cout<
    22 }else{
    23 std::cout<<No data!<
    24 return -1;
    25 }
    26 return 0;
    27 }



    【申明这段代码的常识点:】


    1. 每一个C++法度都包含一个或多个函数,但必须有一个主函数main(),且main函数是独一被操纵体系显式调用的函数;


    2. C++并没有直接定义进行输入输出(IO)的任何语句,这种功能由标准库供给的;标准库定义了4个IO对象;



    1. 处理惩罚输入时应用 cin(读:see-in)的istream类型对象,这个对象也叫做标准输入。

    2. 处理惩罚输出时应用cout(读:see-out)的ostream类型对象,这个对象也叫做标准输出。

    3. cerr(读:see-err),cerr对象又叫做标准错误,凡是用来输出警告和错误信息给法度应用者;

    4. clog(读:see-log),clog对象用于产生法度履行的一般信息;


    3. std::注解cin,cout和endl是定义在定名空间(namespace)std中的。【应用定名空间,法度元可以避免因为无意应用了与库中所定义名字雷同的名字而引致冲突】,::感化域操纵符(scope operator,::操纵符)


    4. endl 是一个特别值,称为把持符,将它写入输出流时,有换行结果,并刷新与设备相接洽关系的缓冲区。经由过程刷新缓冲区,用户可立即看到写入到流中的输出。


    5. 注释:单行注释以双斜线(//)开首,多行注释以“/”开首,以“”结尾;


    6. 一些语句while语句,for语句,if语句都不再申明;


    7. 读入未知数量标输入:while(std::cin>>trans) 它具有从标准输入读取一个数并且将读入的值保存在trans中的结果。



    1. 输入操纵符(>>)返回左操纵数,while 前提测试输入操纵符的返回成果,即测试std::cin;

    2. 应用istream对象作为前提,成果是测试流的状况,若是流逝有效的(也就是说读入下一个输入是可能的)那么测试成功;若是碰到文件停止符(end-of-file)或碰到无效输入时,如读取了一个不是整数的值,则istream对象是无效的。处于无效状况的istream对象将导致前提失败;

    3. Windows体系下经由过程键入Ctrl+z,来输入文件停止符;Unix体系中,包含Mac OS-X机械,凡是用control+d;


    8. Sales_item类的目标是存储ISBN并保存该书的发卖册数,发卖收入和均匀售价。



    1. 每个类定义一种类型,类型名和类名雷同。是以用Sales_item类定义了total和trans :Sales_item total, trans;

    2. 类Sales_item的创建者定义该类对象可以履行的所有操纵(+[将两个Sales_item对象相加],>>[来读取一个Sales_item对象],<<[来输出一个Sales_item对象],=[讲一个Sales_item对象赋值给另一个Sales_item对象],same_isbn函数[断定两个Sales_item是否指同一本书])


    9. if(total.same_isbn(trans)){



    1. 调用定名为item1的Sales_item对象的成员函数【成员函数是由类定义的函数,有时称为类办法(method)】

    2. 点操纵符“.” 经由过程它的左操纵数取得有操纵数。左操纵数必须是类类型的对象,右操纵数必须是指定该类型的成员的名字,而不是对象或值;

    3. 调用操纵符(),


    参考册本


    [1]C++primer 中文第四版

    分享到: