您的位置:首页 > 编程语言 > C语言/C++

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

2016-08-05 15:48 337 查看
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

 





#include<iostream>    

#include<sstream>        //istringstream 必须包含这个头文件  

#include<string>    

using namespace std;    

int main()    

{    

    string str="i an a boy";    

    istringstream is(str);    

    string s;    

    while(is>>s)    

    {    

        cout<<s<<endl;    

    }    

        

}   

输出是:

i

an

a
boy

HDU  2070

我的复杂代码是: 

[cpp] view
plain copy

 





#include<iostream>  

#include<set>  

#include<string>  

using namespace std;  

int main()  

{  

    set<string> se;  

    string tempstr,str;  

    while (getline(cin,str) && str != "#")  

    {  

        se.clear();  

        for (int i = 0; i < str.length(); i++)  

        {  

            if(str[i] == ' ')  

            {  

                if(tempstr != "")se.insert(tempstr);  

                tempstr = "";            //注意将字符串清空  

            }  

            else  

            {  

                tempstr += str[i];  

            }  

        }  

        if(tempstr != "")se.insert(tempstr);  

        cout<<se.size()<<endl;  

    }  

    return 0;  

}  

简短代码是:

[cpp] view
plain copy

 





#include<iostream>  

#include<string>  

#include<set>  

#include<sstream>  

using namespace std;  

int main()  

{  

    string str,w;  

    set<string>se;  

    while(getline(cin,str) && str != "#")  

    {  

        se.clear();  

        istringstream is(str);        

        while (is>>w)  

            se.insert(w);  

        cout<<se.size()<<endl;  

    }  

    return 0;  

}  



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: