stoi家族函数详解

2024-05-28 20:20
文章标签 函数 详解 家族 stoi

本文主要是介绍stoi家族函数详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

atoi家族函数详解

  • 1.atoi函数
    • 1.1函数原型
    • 1.2函数使用
    • 1.3函数使用的注意事项
    • 1.4atoi函数的模拟实现
  • 2.其它函数

atoi函数家族中包含atof、atol、_atoi64
他们的作用为将字符串转换成double(atof)、integer(atoi、_atoi64)、long(atol)
他们都被包含在头文件<stdlib.h>中
下面我们来详细阐述他们的作用

1.atoi函数

1.1函数原型

int atoi( const char *string );

函数参数:是一个以null结尾的字符串的指针
函数返回值:返回的是一个转换过后的整数

1.2函数使用

函数的使用较为简单

//atoi函数
#include <stdlib.h>//函数使用包含头文件int main()
{char arr[] ="-1234";int ret = atoi(arr);printf("%d", ret);return 0;
}

1.3函数使用的注意事项

1.函数首先会将从起始地址开始后连续的空格忽略,读取空格后有数字的地方,如果是数字中也含有空格,则停止读取,返回已读取的内容
2.如果存在-/+,如果符号在数值位之前,也就是-123,那么直接读取即可,如果符号在数值位中,也就是1-23或123-,则对应得,只读取1或123,也就是说,符号的检测只发生在数值位读取之前,在读取数值位时。如果读取的不是正确的数值的话,会停止读取
3.如果字符串中第一个非空字符不是有效的整数,或是传入空指针,或传入空值,则不执行任何转换,并返回0

1.4atoi函数的模拟实现

//atoi函数的模拟实现
#include <ctype.h>//使用了字符分类函数,包含头文件
//isspace:如果参数为空白字符就返回真
//isdigit:如果参数为十进制字符就返回真int Myatoi(const char* pa)
{//如果传入空指针或空字符,直接返回0if (*pa == '\0' || *pa == NULL)return 0;//首先要清理空格while (isspace(*pa))pa++;int ret = 0;//存储返回值int type = 1;//定义正负号,用type乘以一个数,type只能表示1和-1//判断正负号if (*pa == '+')pa++;else if (*pa == '-'){type = -1;pa++;}//计算值while (isdigit(*pa)){ret = ret * 10 + (*pa - '0') * type;pa++;}return ret;
}int main()
{char arr[] = "NULL";int ret1 = atoi(arr);printf("ret1 = %d\n", ret1);int ret2 = Myatoi(arr);printf("ret2 = %d\n", ret2);return 0;
}

2.其它函数

stoi函数家族的其它函数与atoi函数相同,具体·用法参考atoi函数即可
但是要注意一些区别:

1.stoi和stol都用于整形转换,但是atol可以处理更大的数值范围
2.注意返回类型
3._atoi64用于在32位机器上处理64位整数,但是对于64位整数,建议使用atoll,返回long long类型,因为long long类型是C99标准定义的64位整数类型,而_int64类型只是特定编译器的拓展

这篇关于stoi家族函数详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1011592

相关文章

Java中的getBytes()方法使用详解

《Java中的getBytes()方法使用详解》:本文主要介绍Java中getBytes()方法使用的相关资料,getBytes()方法有多个重载形式,可以根据需要指定字符集来进行转换,文中通过代... 目录前言一、常见重载形式二、示例代码三、getBytes(Charset charset)和getByt

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component

python+OpenCV反投影图像的实现示例详解

《python+OpenCV反投影图像的实现示例详解》:本文主要介绍python+OpenCV反投影图像的实现示例详解,本文通过实例代码图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前言二、什么是反投影图像三、反投影图像的概念四、反向投影的工作原理一、利用反向投影backproj

Kotlin运算符重载函数及作用场景

《Kotlin运算符重载函数及作用场景》在Kotlin里,运算符重载函数允许为自定义类型重新定义现有的运算符(如+-…)行为,从而让自定义类型能像内置类型那样使用运算符,本文给大家介绍Kotlin运算... 目录基本语法作用场景类对象数据类型接口注意事项在 Kotlin 里,运算符重载函数允许为自定义类型重

嵌入式Linux驱动中的异步通知机制详解

《嵌入式Linux驱动中的异步通知机制详解》:本文主要介绍嵌入式Linux驱动中的异步通知机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、异步通知的核心概念1. 什么是异步通知2. 异步通知的关键组件二、异步通知的实现原理三、代码示例分析1. 设备结构

Python中Flask模板的使用与高级技巧详解

《Python中Flask模板的使用与高级技巧详解》在Web开发中,直接将HTML代码写在Python文件中会导致诸多问题,Flask内置了Jinja2模板引擎,完美解决了这些问题,下面我们就来看看F... 目录一、模板渲染基础1.1 为什么需要模板引擎1.2 第一个模板渲染示例1.3 模板渲染原理二、模板

Redis中6种缓存更新策略详解

《Redis中6种缓存更新策略详解》Redis作为一款高性能的内存数据库,已经成为缓存层的首选解决方案,然而,使用缓存时最大的挑战在于保证缓存数据与底层数据源的一致性,本文将介绍Redis中6种缓存更... 目录引言策略一:Cache-Aside(旁路缓存)策略工作原理代码示例优缺点分析适用场景策略二:Re

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib