目录
1. stoi详解
头文件<stdlib,h>
函数有一个参数:str。它是指向char类型的指针类型,函数作用是将字符串中的数字转变为整型类型,并返回。
演示
1.1 函数的特点:
字符串开头是空格或制表符时,函数会自动跳过他们向后找直到找到正负号或数字,但找到数字后接着向后找,直到找到非数字的字符(包括空格)或\0停下,并以整型类型返回前面找到的数字。若第一个找到的不是数字而是字符那么函数会返回0。
演示1:
可见字符串前面的空格和制表符都被函数跳过了,字符a后面的数字也没有读取到,
案例二:
可见读取12后遇到空格就结束了。
实例2:
123前有字符a所以找到a后函数就停止了向后的遍历。
2. atoi函数的模拟实现:
#include <assert.h>
#include <ctype.h>
int my_atoi(const char* str)
{
assert(str);
int num = 0;
while (isspace(*str))
{
str++;
}
if ((!isdigit(*str)) && (*str != '-') && (*str != '+'))
{
return 0;
}
if (*str == '+' || isdigit(*str))
{
if(*str=='+')
str++;
while (isdigit(*str))
{
num = num * 10 + (*str-48);
str++;
}
return num;
}
else
{
str++;
while (isdigit(*str))
{
num = num * 10 + (*str-48);
str++;
}
return -num;
}
}
在这里用到了字符分类函数isspace和isdigit,分别来判断是否是空白字符和是否是数字字符。
我们自己模拟实现的函数和库函数的作用是相同的
运行演示:(其他特殊情况不在演示)
运行成功,可见我们完成了模拟实现。
感谢观看,欢迎品论区讨论。