如何将string类型(字符串)转换为int类型(整型)呢?一定要用网上那些奇形怪状的函数吗?
其实不用系统给的函数,几行代码也可以解决这个问题。代码见下:
`
#include
#include
#include
#include
using namespace std;
string n;
int ans=0;
int main()
{
cin>>n;
int num=n.length();
for(int i=0;i<num;i++)
{
ans=ans+(n[i]-‘0’)*pow(10,(num-1-i));
}
cout<<“ans=”<<ans<<endl;
return 0;
}
`
其中,大家可能不知道三个东西,在这里我为大家解释:
- n.length()是什么?
- pow是什么?
- 为什么要减’0’?
第一个问题 length()是什么?简单的说,length()是一个无参函数,可以统计字符串的有效长度。n.length就是统计字符串n的有效长度。length()包括在cstring头文件里面。
第二个问题 pow是什么?pow(x,y)就是计算x的y次方是多少。该函数包括在cmath头文件里。
最后一个问题 为什么要减’0’?因为n是一个字符串,n[i]是一个字符,如果将两者直接相加减,那么系统将把该字符直接转化成ASCII码,运算的就并非是n[i]本身这个数字了。要想拿数字相加减,就必须减去0的ASCII码,即减去’0’,便可以拿数字相加减,达到我们想要的int类型。比如:若n[i]为’1’,那么它的ASCII码便为81,此时再减去ASCII码为80的’0’,则得到这个数字本身:1(81-80=1)。
结语
string类型转换为int类型并非难事。也许在一些人看来还是使用c++自带的函数方便。但是本人亲自试过,网上的一些函数并不能使用,在背那些奇怪的函数名时,还不如自己编几行代码来实现转换。
本人是一个小白,有什么不同意见也希望大家留言给我~点个赞,让我看到你。