考慮這樣一個問題:給您一行各位數字,計算它們的和,數字之間用空格隔開,只能使用字串,
一般考慮使用getchar,但這對于不熟悉 ASCLL 碼的同學十分困難,C++的sstream頭檔案中提供了十分簡單的辦法,
string s;
getline(cin,s);
stringstream s1(s);
int num,sum=0;
while(s1>>num)sum+=num;
cout<<"sum="<<sum<<endl;
其中getline(cin,s)讀取了一整行字串,
接下來有一個奇怪的東西:stringstream s1(s),這句話相當于定義了一個名為s1的string流,流中目前是一個字串s,其功能十分強大,
在假設已定義了字串流s1,并確定流內包含s,s="1 2 3 4"情況下:
int num;
s1>>num;
cout<<"num="<<num<<endl;
我們發現輸出為num=1,還不明顯?好吧,我們把最后輸出num的值加一,即:
cout<<"num="<<num+1<<endl;
輸出變成了num=2!眾所周知,字符是不能直接加數字的,此程式說明:s中的1存入num時變成了int型!
大家可能已經明白這條陳述句的作用了:將在第一個空格前的所有字符轉換成對應的型別存入對應的變數!
當然,stringstream絕不止這點功能,下面通過一些例子說明:
stringstream ss; //建立一個string流
int num=114514;
ss<<num; //將int型的num中存放的數字轉換為字串傳入ss中
char ch;
ss>>ch; //由于ch是char型變數,所以只能存放一個字符
cout<<ch<<endl; //所以輸出為1
string s;
ss>>s; //將流中剩下的東西傳遞給string類的s
cout<<s<<endl; //s是一個字串,而剛剛傳遞了字符'1'給ch,所以這時輸出為14514
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/63268.html
標籤:C++
下一篇:題解 P6013 【壓歲錢】
