Stringstream简单使用

21 篇文章 0 订阅

#include<sstream>

这里就会谈一下关于这个头文件比较实用的部分,首先说这个头文件里的一个类 stringstream类。stringstream是字符串流。

1、使用stringstream转换类型

#include<iostream>
#include<sstream>
using namespace std;
typedef long long ll;
int main()
{
    ll num = 0;
    string str = "123456789123456789";
    stringstream ss; //定义一个stringstream的对象
    ss << str; //可以理解为把str这个字符串变成流
    ss >> num; //流的话输出的时候会根据 >> 后面的变量类型进行输出
    //类似于 sin >> x  输入的数据会根据x的类型进行输出,不像scanf("%d", &x);
    //一样,还需要自己告诉计算机类型,这也是为什么 cin 要比 scanf 慢的原因
    /**这时候num就保存了 long long 类型的123456789123456789***/
    cout<<num<<'\n';
}

2、使用stringstream类型进行数据切分

如果给你一个字符串  :  12x45x26x89 让你把x看作空格,计算用x分开的正整数的总和。

#include<iostream>
#include<sstream>
using namespace std;
typedef long long ll;
int x, sum = 0;
int main()
{
    string str;
    while(cin>>str)
    {
        for(int i = 0; i < str.length(); i++){
            if(str[i] == 'x') str[i] = ' ';
        }
        stringstream ss(str); //定义一个stringstream类型的对象并用str进行初始化
        while(ss >> x)  //可以理解为cin >> , cin也是以空格或者回车作为结束的标准
                        //实际上cin应该也是类似于这种输入,都是通过流来输入的。(可以先这样理解着)
        {
            sum += x;
        }
        cout<<sum<<'\n';
    }
}

 简单举个例子,有次比赛,它给你的数据是这样给的:(让你求这些数的和,每一行的数字个数是不确定的)
sample in:

3
12  63  3  56
12  55
66  2  99

sample out:

368

#include<iostream>
#include<sstream>
#include<cstdio>
#include<string>
using namespace std;
typedef long long ll;
int T, sum, x;
int main()
{
    string line;
    cin>>T;
    getchar(); //吃掉一个回车,防止getline()输入
    while(T--){
        getline(cin, line);
        stringstream ss(line);
        while(ss >> x){
            sum += x;
        }
    }
    cout<<sum<<'\n';
    return 0;
}


 

 

 

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值