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) { /*.....*/ }