算法之字符串转整数,整数转字符串
今天做了虎牙直播的最后一道算法,真是受益匪浅,但是当时写得有点复杂,之后重新简化一遍,看题:
分析:看这个题的时候,整数和字母拼在一起,整数作为的是字符,要做的是转成整形,还要注意负号。
关键:使用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