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();

输入n行,每行读入不超过k个数字

因为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;
}
原文地址:https://www.cnblogs.com/forward-985/p/13719692.html