练习5.4

5.4:说面下列例子的含义,如果存在问题,试着修改它。

(a) while (string::iterator iter !=s.end()) { /*.....*/}

(b) while (bool status =find(word) ) {  /*...*/ }

    if(!status) { /*.....*/ }

Ans:a)语句的含义是判断迭代器是否指向尾元素的下一个位置,如果不是,则执行循环体内容。但是存在问题,由于一开始就使用了迭代器,并没有进行初始化,编译器会报错。

修改后的程序:

        string::iterator iter=s.begin();

        while ( iter !=s.end()) { /*.....*/}

     b)语句的含义是通过find函数寻找word这个值,如果找到,返回一个bool类型status,其值为true,然后执行while的循环体;若没有找到返回false,跳出当前while循环,然后通过If语句判断,为真执行if的语句块。但是存在问题,在控制结构中定义的变量,其作用域在当前的控制结构中,若要在其他控制结构中使用,需要在外部定义变量。

修改后的程序:

        bool  status;

        while (bool status =find(word) ) {  /*...*/ }

        if(!status) { /*.....*/ }

原文地址:https://www.cnblogs.com/Dark-King/p/9454717.html