c++ strstream

       终于刷完leetcode的easy题了,今天开始刷medium的537时点击打开链接,发现需要不断的将string和int类型相互转化,感觉写起来好麻烦。虽然过了,不过感觉快100行的代码实在是太复杂了,看了下别人的代码:
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();
    }
};

       居然还有这种操作···主要还是自己没掌握字符串流操作的精髓,如果想使用strstream要引入strstream头文件;类似的stringstream的头文件为sstream,这里主要介绍一下针对这道题的一些心得,关于区别和其他应用可能以后会提到。

       其中的buff吸首先收了第一个和整型不相关的字符“+”,之后吸收了“i”,从而让ra和ia中保留了a的实部和虚部。这里我对第一个“+”的过滤很好奇,而且之后如果出现了以“-”开头也会被判断为负数传入ia中。在本地跑了一些样例,代码很简单:

int main()
{
    string s;
    cin>>s;
    stringstream ss(s);
    int a,b;
    char c;
    ss>>a>>c>>b;
    cout<
下面是几个例子分享给各位:

eg1:

input:111+222

output:111 + 222

eg2:

input:111-222

output:111 - 222

eg3:

input:111-+222

output:111 - 222

eg4:

input:111+-222

output:111 + -222

eg5:

input:111+++222

out:111 + 0


       看来样例5出现问题了,字符流流入int类型变量中,最多只能在前面携带一个“+”或“-”。

你可能感兴趣的:(c++ strstream)