• while(cin)?


    #include<iostream>
    #include<utility>
    using namespace std;
    int main()
    {
       int i;
       do
       {
        cout<<i<<endl; 
       }while(cin>>i);
    }

    首先输出个0.之后输入X,输出X;当输入ctrl+d时,没有输出,结束。

    #include<iostream>
    #include<utility>
    using namespace std;
    int main()
    {
       int i;
       do{
          cin>>i;
          cout<<i<<endl; 
    
       }while(cin); 
    }

    输入x,输出x;当输入ctrl+d时,再输出个上一次的输入量,结束。

    ctrl+d表示表示输入错误。

    cin.clear()可以重新将cin置为有效。

    导致循环终止的原因是流对象cin进入错误状态:系统输入级故障;读入了无效数据;遇到文件结束符。

    下面是一个用到cin判断作为循环条件的程序:

    #include<iostream>
    #include<utility>
    #include<vector>
    #include<map>
    using namespace std;
    int main()
    {
       map<string,vector< pair<string,string> > > family;
       pair<string,string> pa;
       string surName,childName,birthDate;
       do{
          cout<<"enter surname"<<endl;
          cin>>surName;
          if(!cin)
         break;                     //如果cin无效,跳出循环
          vector< pair<string,string> > child;
          pair<map<string,vector<pair<string,string> > >::iterator,bool>
          ret = family.insert(make_pair(surName,child));
          cout<<"input name and age"<<endl;
          while(cin>>surName>>birthDate)
          {
             pair<string,string> pa;
             pa = make_pair(surName,birthDate);
             ret.first->second.push_back(pa);     //ctrl+d跳出循环,此时cin无效
          }
          cin.clear();           //使cin重新有效,以达到下面while循环条件。
       }while(cin);
       cout<<"enter search"<<endl;
       cin.clear();
       cin>>surName;
       map<string,vector< pair<string,string> > >::iterator it = family.find(surName);
       if(it==family.end())
       cout<<"no this surname"<<endl;
       else
       {
       vector< pair<string,string> >::iterator itt = it->second.begin();
       while(itt!=it->second.end())
          {
          cout<<(*itt).first<<"		"<<(*itt).second<<endl;
          itt++;
          }
       }
       return 0;
    }
  • 相关阅读:
    ehcache 2.4 即将发布,亮点多多
    2010 年个人回忆与总结
    ehcache 2.4 即将发布,亮点多多
    JBoss Seam 3.0.0.Beta1 发布
    JBoss Seam 3.0.0.Beta1 发布
    jQuery 1.5 正式版如期发布
    jQuery 1.5 正式版如期发布
    Contracts for Java
    2010 年个人回忆与总结
    Contracts for Java
  • 原文地址:https://www.cnblogs.com/little-white/p/3594384.html
Copyright © 2020-2023  润新知