```
int main()
{
string s1, s2, s3;
char temp, save;
stringstream trans;
int n;
cin >> n;
while (n--)//输入n次
{
cin >> s1;//输入第一个字符
if (isalpha(s1[0]))//判断第一个元素是否为字母
{
temp = s1[0];
cin >> s2 >> s3;//是的话输入剩下两个数据
}
else
{
cin >> s2;//不是的话把再输入第二个数据,把第一个数据从s1移到s2,第二个数据移到s1统一一下,方便后面转整个长的字符串
s3 = s2;
s2 = s1;
}
int sum = 0, a1, a2;//设置a1,a2存储两个数据
trans << s2;//stringstream类型可以实现字符串还有任意数据类型的互化,这里是把第一个数据放入trans里面
trans >> a1;//把trans里面的数据转化为int型(这里可以转int是因为设置的a1是int型)
trans.clear();//清除trans里面的所有数据,存一次用一次清理一次,后面是一样的操作,不解释了;
trans << s3;
trans >> a2;
trans.clear();
if (temp == 'a')//三个判断,确定运算法则;
{
sum = a1 + a2;
save = '+';//save用来存储运算符号,方便转为最后的长串
}
else if (temp == 'b')
{
sum = a1 - a2;
save = '-';
}
else if (temp == 'c')
{
sum = a1 * a2;
save = '*';
}
string s4, s5;
trans << sum;
trans >> s4;
trans.clear();
trans << s2 << save << s3 << '=' << s4;//把前面所有分开的串连一起,注意顺序
trans >> s5;//把trans里面的字符串存入s5;
trans.clear();//清理,确保下次的trans为空
cout << s5<<endl;//输出长串
cout << s5.size() << endl;//输出长度;
}
return 0;
}
```
试试这个?巧用#include<sstream>头文件,希望能帮到你。
by jkluio1 @ 2024-03-19 18:01:22
已过,谢谢
by Alex866 @ 2024-05-05 10:25:40