stringstream的基本用法


stringstream是字符串流。它將流與存儲在內存中的string對象綁定起來。

在多種數據類型之間實現自動格式化。

1 stringstream對象的使用

#include<sstream>
#include<iostream>
using namespace std;
int main()
{
        string line,word;
        while(getline(cin,line))
        {
                stringstream stream(line);
                cout<<stream.str()<<endl;
                while(stream>>word){cout<<word<<endl;}
        }
        return 0;
}

輸入:shanghai no1 school 1989

輸出:shanghi no1 school 1989

      shanghai

    no1

    school

    1989

2stringstream提供的轉換和格式化

程序:

#include<sstream>
#include<iostream>
using namespace std;
int main()
{
        int val1 = 512,val2 =1024;
        stringstream ss;
        ss<<"val1: "<<val1<<endl          //“val1: "此處有空格,字符串流是通過空格判斷一個字符串的結束
     <<"val2: "<<val2<<
endl; cout<<ss.str(); string dump; int a,b; ss>>dump>>a
     >>dump>>
b; cout<<a<<" "<<b<<endl; return 0; }

輸出為:val1: 512

    val2: 1024

    512 1024

第一處黑體字部分:將int類型讀入ss,變為string類型

第二處黑體字部分:提取512,1024保存為int類型。當然,如果a,b聲明為string類型,那么這兩個字面值常量相應保存為string類型

3其他注意

stringstream不會主動釋放內存(或許是為了提高效率),但如果你要在程序中用同一個流,反復讀寫大量的數據,將會造成大量的內存消 耗,因些這時候,需要適時地清除一下緩沖 (用 stream.str("") )

#include <cstdlib>
#include<iostream>
#include<sstream>
using namespace std;
int main()
{
        stringstream ss;
        string s;
        ss<<"shanghai no1 school";
        ss>>s;
        cout<<"size of stream = "<<ss.str().length()<<endl;
        cout<<"s: "<<s<<endl;
        ss.str("");
        cout<<"size of stream = "<<ss.str().length()<<endl;
}

輸出:

size of stream = 19
s: shanghai
size of stream = 0

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM