stringstream分割字符与类型转换

stringstream分割字符与类型转换用法:

#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main(){

    //    string s;
    //    getline(cin,s);

/**********如果输入是以其他符合分割(如逗号等),先利用getline(ss, word,',')分割成string,再通过ss2转换成int类型***********/

//-----------分割字符----------------------
    string s1="1,2,3,4,5,6";
    //string s1="hello,my,name,is,C++";
    stringstream ss(s1);
    string word;
    vector<string>v;
    while(getline(ss, word,','))
        v.push_back(word);

//如果只要string类型截止到上面,如果还要把string转int,采用下面方法

//-----------类型转换----------------------
    vector<int> Output;

    //法一:利用stringstream实现类型转换
    stringstream ss2;
    int num;
    vector<string>::iterator it;
    for(it=v.begin();it!=v.end();++it){
        ss2<<*it;
        ss2>>num;
        ss2.clear(); //使用同一个stringstream不要忘记清除
        Output.push_back(num);
    }

    //法二:采用atoi函数将string转成int
//    vector<string>::iterator it2;
//    for(it2=v.begin();it2!=v.end();++it2)
//       Output.push_back(atoi((*it2).c_str()));

    //输出
    for(auto e:Output)
      cout<<e<<endl;


/**********如果输入是以空格符号分割,将string转换成int,可以直接使用下面操作**********/
//    string s3="1 2 3 4 5";
//    stringstream ss(s3);
//    vector<int>vv;
//    int num;
//    while(ss>>num)
//      vv.push_back(num);
//    vector<int>::iterator iter;
//    for(iter=vv.begin();iter!=vv.end();++iter){
//     cout<<*iter<<endl;
//    }

    return 0;
}

LeetCode题目详解

Input: "1+1i", "1+1i"
Output: "0+2i"
Explanation: (1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i, and you need convert it to the form of 0+2i.

 

class Solution {
public:
    string complexNumberMultiply(string a, string b) {
        int ra, ia, rb, ib;
        char buff;
        stringstream aa(a), bb(b), ans;
        aa >> ra >> buff >> ia >> buff;//拆分
        bb >> rb >> buff >> ib >> buff;
        ans << ra*rb - ia*ib << "+" << ra*ib + rb*ia << "i";//组合
        return ans.str();
    }
};

      stringstream类型转换的时候,一直读到第一个不符合类型的字符为止。因此 空格 + - 会成为字符串参数的内部分界,例子中对ra,ia对象的输入”赋值”操作证明了这一点,字符串的空格成为了整型数据与符号数据的分解点,利用分界获取的方法我们事实上完成了字符串到整型对象与符号对象的拆分转换过程

参考链接:https://blog.csdn.net/qq_34244317/article/details/78070883

                https://blog.csdn.net/xw20084898/article/details/21939811

                https://www.cnblogs.com/qiaoconglovelife/p/5585710.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值