如何将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;

}
`
其中,大家可能不知道三个东西,在这里我为大家解释:

  1. n.length()是什么?
  2. pow是什么?
  3. 为什么要减’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++自带的函数方便。但是本人亲自试过,网上的一些函数并不能使用,在背那些奇怪的函数名时,还不如自己编几行代码来实现转换。
本人是一个小白,有什么不同意见也希望大家留言给我~点个赞,让我看到你。


版权声明:本文为Like_Ginger原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Like_Ginger/article/details/94054293