stringstream字符串流
例题详解
題目:输入的第一行有一个数字 N 代表接下來有 N 行資料,每一行資料里有不固定個數的整數(最多 20 個,每行最大 200 個字元),請你寫一個程式將每行的总和印出來。
輸入:
3
1 2 3
20 17 23 54 77 60
111 222 333 444 555 666 777 888 999
輸出:
6
251
4995
代码:
1 #include<iostream> 2 #include<sstream> 3 #include<algorithm> 4 using namespace std; 5 int main(){ 6 string s; 7 int T,a; 8 cin>>T; 9 getchar(); 10 while(T--){ 11 getline(cin,s); 12 stringstream ss(s); 13 int sum=0; 14 while(1){ 15 ss>>a; 16 if(ss.fail())break; 17 sum+=a; 18 } 19 cout<<sum<<endl; 20 } 21 return 0; 22 }
以下是对于stringstream和sprintf和sscanf的理解:
1 /*#include<algorithm> 2 #include<iostream> 3 #include<sstream> 4 using namespace std; 5 int main(){ 6 string s="carea 89 男"; 7 stringstream ss(s); 8 string a,b; 9 int c; 10 ss>>a>>c>>b; 11 cout<<s<<endl; 12 cout<<a<<endl<<c<<endl<<b<<endl; 13 return 0; 14 }*/ 15 /* 16 #include<algorithm> 17 #include<iostream> 18 #include<cstdio> 19 using namespace std; 20 int main(){ 21 char s[50],ss[50]; 22 int a=154000,b=848; 23 sprintf(s,"%d plus %d is %d",a,b,a+b);// 24 cout<<s<<endl; 25 sscanf(s,"%*s%s",ss);// 26 puts(ss); 27 return 0; 28 }*/