算法之字符串转整数,整数转字符串

今天做了虎牙直播的最后一道算法,真是受益匪浅,但是当时写得有点复杂,之后重新简化一遍,看题:

分析:看这个题的时候,整数和字母拼在一起,整数作为的是字符,要做的是转成整形,还要注意负号。
关键:使用string+string拼接
           使用int n=stoi(res, 0, 10)转成10进制整数
代码:

#include<iostream>
using namespace std;
#include<string>
#include<vector>
int main()
{
    string str,res;
    int i,j,sum = 0;
    cin >> str;     //输入字符串
    for (i = 0; i < str.length(); i++){
        int a = 0, n = 0;
        if (str[i]>='0' &&str[i]<='9'|| str[i] == '-'){     //遇到负号或者是整数时,进入
            if (str[i] == '-')res += str[i];
            else {
                for (j = i; str[j] >= '0' &&str[j] <= '9'; j++){     //把连续整数拼接在一起
                    res += str[j];
                }                
                int n = stoi(res, 0, 10);    //转成整形
                sum += n;    
                res.clear();  //清空临时字符串
                i = j-1;
            }            
        }
    }
    cout << sum << endl;
    system("Pause");
    return 0;
}

知识点:

整数转字符串:

使用string中的string str=to_string(int a );

字符串转整数:

使用string中的int n=stoi(s,p,b);

除此之外还有:

string和数值转换    转换类型
to_string(val)    把val转换成string
stoi(s,p,b)         把字符串s从p开始转换成b进制的int
stol(s,p,b)         把字符串s从p开始转换成b进制的long
stoul(s,p,b)       把字符串s从p开始转换成b进制的unsigned long
stoll(s,p,b)        把字符串s从p开始转换成b进制的long long
stoull(s,p,b)      把字符串s从p开始转换成b进制的unsigned long long
stof(s,p)            把字符串s从p开始转换成float
stod(s,p)           把字符串s从p开始转换成double
stold(s,p)          把字符串s从p开始转换成long double

c语言数字和字符的相互转换

int a=5;
char c;
c=(char)(a+'0');

int a;
char c='5';
a=c-'0';

猜你喜欢

转载自blog.csdn.net/weixin_40535588/article/details/89481198