stringstream使用
stringstream的头文件是《sstream》,stringstream可以作为中间介质,实现字符串和数字之间的转换。
数字转string
double a=213;
string s;
stringstream ss;
//注意stringstream ss(a)是错误的,因为a是数字
ss<<a;
ss>>s;
cout<<s;//等价于cout<<ss.str();
string转数字
string s="123";
int b;
stringstream ss(s);//这是可以的
ss>>b;//不能写成s>>ss;必须既要有 ss<<a,也要有ss>>b,或者用括号初始化
cout<<b;//等价于cout<<ss.str();
因为string类不能直接和数字进行转换,借助stringstream
int a[N],cnt=0;
string s;
for(int i=0;i<n;i++)
{
getline(cin,s);
stringstream ss;
ss<<s;
while(ss>>a[cnt++])
}
注意事项
cin>>m>>n;
string line;
getline(cin,line);//将cin遗留的换行符从缓冲区钟读取出来
基础不牢,地动山摇
#include <bits/stdc++.h>
typedef long long LL;
using namespace std;
/*
4278:7:20
4278:10:5
75
*/
int main()
{
string s1,s2;cin>>s1>>s2;
stringstream ss(s1+':'+s2);
string t;
int a[10],cnt=1;
while(getline(ss,t,':'))
{
stringstream temp(t);
temp>>a[cnt++];
}
int a1=a[1],b1=a[2],c1=a[3];
int a2=a[4],b2=a[5],c2=a[6];
if(b1<=0||b1>10||b2<=0||b2>10||c1<=0||c1>30||c2<=0||c2>30)
cout<<"NO CAKE!";
else if(a1!=a2)
cout<<"NO CAKE!";
else if((b2-b1)*30+c2-c1<0)
cout<<"NO CAKE!";
else
cout<<(b2-b1)*30+c2-c1;
return 0;
}