C++中的istringstream 的用法 HDU 2072单词数

C++中的istringstream 的用法 

今天看到了一个比较有用的c++的输入输出控制类。C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含<sstream>这个头文件。
                           istringstream类用于执行C++风格的串流的输入操作。
                           ostringstream类用于执行C风格的串流的输出操作。

                           strstream类同时可以支持C风格的串流的输入输出操作。


istringstream的构造函数原形如下:
istringstream::istringstream(string str);
它的作用是从string对象str中读取字符。


[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. #include<iostream>    
  2. #include<sstream>        //istringstream 必须包含这个头文件  
  3. #include<string>    
  4. using namespace std;    
  5. int main()    
  6. {    
  7.     string str="i an a boy";    
  8.     istringstream is(str);    
  9.     string s;    
  10.     while(is>>s)    
  11.     {    
  12.         cout<<s<<endl;    
  13.     }    
  14.         
  15. }   


输出是:
i
an
a

boy


HDU  2070

我的复杂代码是: 

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. #include<iostream>  
  2. #include<set>  
  3. #include<string>  
  4. using namespace std;  
  5. int main()  
  6. {  
  7.     set<string> se;  
  8.     string tempstr,str;  
  9.     while (getline(cin,str) && str != "#")  
  10.     {  
  11.         se.clear();  
  12.         for (int i = 0; i < str.length(); i++)  
  13.         {  
  14.             if(str[i] == ' ')  
  15.             {  
  16.                 if(tempstr != "")se.insert(tempstr);  
  17.                 tempstr = "";            //注意将字符串清空  
  18.             }  
  19.             else  
  20.             {  
  21.                 tempstr += str[i];  
  22.             }  
  23.         }  
  24.         if(tempstr != "")se.insert(tempstr);  
  25.         cout<<se.size()<<endl;  
  26.     }  
  27.     return 0;  
  28. }  

简短代码是:

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. #include<iostream>  
  2. #include<string>  
  3. #include<set>  
  4. #include<sstream>  
  5. using namespace std;  
  6. int main()  
  7. {  
  8.     string str,w;  
  9.     set<string>se;  
  10.     while(getline(cin,str) && str != "#")  
  11.     {  
  12.         se.clear();  
  13.         istringstream is(str);        
  14.         while (is>>w)  
  15.             se.insert(w);  
  16.         cout<<se.size()<<endl;  
  17.     }  
  18.     return 0;  
  19. }  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值