C++ code:string stream(string流)

來源:互聯網
上載者:User

標籤:http   可讀性   cin   ret   names   空格   color   int   一個輸入資料流   

如果有一個檔案aaa.txt,有若干行,不知道每行中含有幾個整數,要編程輸出每行的整數之和,該如何??

由於cin>>不能辨別空格與斷行符號的差異,因此只能用getline的方式逐行讀入資料到string變數中,但在string變數中分離若干個整數還是稍顯吃力。一個好的方法是用string流:

 1 #include<iostream> 2 #include<sstream> 3 #include<fstream> 4 using namespace std; 5 int main() 6 { 7     ifstream in("aaa.txt"); 8     for (string s; getline(in, s);) 9     {10         int a, sum = 0;11         for (istringstream sin(s); sin >> a; sum += a);12         cout << sum << endl;13     }14     cin.get();15     return 0;16 }

講道理,該程式編得有些放肆。本該將istringstream sin(s)單獨佔一行,結果非但不然,還將sum+=a都縮到迴圈結構描述的步長部分中去了。這樣一來,迴圈體便為空白了,於是,for迴圈的描述部分後面加上分號便自成獨立的語句,但它確實能夠完成累計工作。作為單獨的迴圈,最後的“;”還是不能忘記的!!因為程式小,所以可讀性還不到受傷害的地步,請讀者來見識一下著這種風格。

istringstream是輸入string流,它在sstream標頭檔中說明。該語句類似檔案流操作,只不過建立sin流時,其參數為string對象。它是將string的實體看作是一個輸入資料流,因而,sin>>a即是從string流中輸入整數到a中,輸啊輸,一直輸到string中的最後一個整數!

string流很有用,有時候要將內容逐個輸出到string中,最後才根據計算結果來編排輸出格式。這時候,用string流就很管用。

C++ code:string stream(string流)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.