명품 C++ 문자열 처리 응용 - 덧셈 문자열을 입력 받아 덧셈 실행

题目

4+125+4+77+102 등으로 표현된 덧셈식을 문자열로 입력받아 계산하는 프로그램 작성하라.

必要函数

getline()是定义在头文件中,功能是取一行字符串,读到换行符\n结束,并且抛弃换行符,如果需要读取字符,则接着下一行读取
字符串输入到排列里面
ex:
getline(cin,s,’\n’);
读取输入从cin输入的函数,在s中保存,在‘\n’ 位置(换行)结束
substr 函数读取一部分的字符串
stoi 函数将字符串的文字形式转换为数字形式

解题思路

检查算式,分两种情况第一情况:数值结束“2+3+4”,计算sheng

第二情况:加号结束“2+3+”,计算前面的
第三种情况:不是上面两种情况下,分离出不是算式的符号

输入数式
#include <iostream>
#include <string>
using namespace std;

int main(int argc, const char * argv[]) {
    string s;
    cout << " 7+23+5+100+25 一样的加法字符串输入" << endl;
    getline(cin,s,'\n');//输入字符串
识别数式中的加号和成分
    int sum = 0;
    int startIndex = 0;//指引检测字符串里面
    while(true){
        int fIndex = s.find('+' , startIndex);//寻找“+”
        if(fIndex == -1){//没有“+”的情况下
            string part = s.substr(startIndex);
        if(part == "")break;//在➕后面直接结束的情况,即“2+3+”
        cout << part << endl;
        sum +=stoi(part);//将字符串转换为数字
        break;
    }
分离数字并计算
  
      int count =fIndex - startIndex;//分离出每个数字
      string part = s.substr(startIndex,count);//从startindex,count的指数用字符串的形式体现
      cout << part << endl;
      sum += stoi(part);//将字符串转换为数字
      startIndex = fIndex+1;//推进index的检测
  }
  cout << "숫자들의 합은 " << sum << endl;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值