david830_wu 发表于 2008-7-10 09:25

About continue!

这是一个录入数组的函数,来自《C++ Primer Plus》:
int fill_arrary(double ar[], int limit)
{
        using namespace std;
        double temp;
        int i;
        for(i=0;i<limit;i++)
        {
                cout<<"Enter value #"<<(i+1)<<":";
                cin>>temp;
                if(!cin)
                {
                        cin.clear();
                        while(cin.get() !='\n')  /*就是这*/
                                continue;       /*里看不明白*/
                        cout<<"Bad input:input process terminated.\n";
                        break;
                }
                else if(temp<0)
                        break;
                ar[i]=temp;
        }
        return i;
}
上面标记的地方,初学看不太明白,不知道是什么用的,尤其是continue用的奇怪。
在这里请教各位,希望能得到解答,我将万分感激![tk20]

战斗不能 发表于 2008-7-10 13:44

while(cin.get() !='\n')
    continue;

以上和:
while(cin.get() !='\n');

是一样的,就是把输入的内容按字符的方式一个接一个的读完

if(!cin):
表示输入类型不匹配

cin.clear():
表示清除输入错误后的相应流状态,这样就可以重新读刚才的输入了

while(cin.get() !='\n'):
表示重新按照字符的方式读取刚才的输入,循环一直读到最后的回车符

这样就读完了所有的内容

至此,用户就可以再次正常的使用cin了[tk01]

david830_wu 发表于 2008-7-10 13:58

Oh!我明白了!
while(cin.get() !='\n')
    continue;
的作用就是清除好面所有不匹配的流,是后面的读入正常!
高手啊!太谢谢了!!![tk30]

页: [1]

编程论坛