手写方法实现字符串例如:“123“与整型例如:123相互转化(面试必会)

news2024/11/29 14:53:49

目录

二、字符串类型转化为整型

1. 初始化变量

2.定义字符串索引值

3.思考如何将字符'1'转化为数字1

4. 转化思路

5.考虑字符串转化负数例:-123456

6.完整代码

四、最后


一、前言

        在c语言和c++中,有许许多多的数据类型相互转化的方法,这里我就不一一列举了,实在太多了。但是如果让你自己实现类型的转化的方法,你会有一个具体的思路吗?

        而且这也是在面试中面试官会经常问的问题,所以下面我就带着大家以字符串和整形为例,实现数据类型相互转换的方法。

二、字符串类型转化为整型

       字符串类型转化为整型思路比较简单,下面我将以字符串类型str转换为int 类型value为例,讲解思路以及方法。

char str[] { "123456" };

1. 初始化变量

        我们首先初始化两个变量类型,str和num作为互相转化的值。

	//字符串初始化
	char str[]{ "123456" };
	//num初始化 
	int num{ 0 };
2.定义字符串索引值

        将字符串"123456"转化为整型123456,我们需要遍历字符串的每一项,对每一个字符元素进行单独处理,所以我们还需要定义一个第三变量index作为字符串的索引值。

unsigned short index = 0;

如图所示:

3.思考如何将字符'1'转化为数字1

        我们在通过索引值index++取出字符串中的每一项后,同时还要思考如何将每一项的字符转化为数字。例如: ‘1’ 转化为数字 1。

        这一点我们可以根据char字符的本质来思考,我们都知道char字符的本质其实就是数字,在计算机中我们通过字符编码表来进行字符和数字的转化,例如:ASCII表,unicode表等等。所以我们可以通过字符‘1’在ASCII表中的位置来进行数字的转化。

              所以根据上图所示我们可以得出规律,‘1’ 减去48就可以得到数字1.

	char a = '1';
	std::cout << a - 48;; // 1
4. 转化思路

        通过while循环遍历字符的每一项,同时对num的值处理为1,12,123,1234,12345,123456,我们发现规律都是前一项乘以10 然后加上后一项。

如图:

     

代码为:

    while (str[index])
	{
		num = num * 10 + str[index++] - 48;
	}
5.考虑字符串转化负数例:-123456

        如果字符串为"-123456"这种形式,我们的索引值index就要从1开始自增了,而且最后的结果值还有乘以(-1).

        那么index初始化为:

unsigned short index = str[0] == '-' ? 1 : 0;

        最后num的值为:

num = str[0] == '-' ? num * (-1) : num;
6.完整代码

        代码为:

    //字符串初始化
	char str[]{ "123456" };  
	
	//char str[]{ "-123456" };
	
	//num初始化 
	int num{ 0 };
	// 索引值i
	unsigned short index = str[0] == '-' ? 1 : 0;
	while (str[index])
	{
		num = num * 10 + str[index++] - 48;
	}

	num = str[0] == '-' ? num * (-1) : num;

	std::cout << num << std::endl; // 123456

四、最后

        输出结果为:

        本章只实现了字符串到整形的转化,代码实现有很多种写法和形式,我只提供了一种写法。同时我还会继续更新整型到字符串的转化,还请大家多多支持,拯救下秃头的博主吧!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1847914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CARIS HIPS and SIPSv12 是专业的多波束水深数据和声呐图像处理软件

CARIS HIPS and SIPS是专业的多波束水深数据和声呐图像处理软件。CARIS HIPS and SIPS适用于海洋应用需求。其可靠性和可用性对多波束水深数据处理和声呐图像都是很重要的。CARIS HIPS用于处理多波束水深数据&#xff0c;CARIS SIPS用于处理侧扫声呐图像和多波束背向散射回波数…

卫星智慧停车导航系统有哪些优势

卫星智慧停车导航系统凭借其先进的技术和创新的理念&#xff0c;为现代城市停车问题提供了有效的解决方案。以下是卫星智慧停车导航系统的主要优势&#xff1a; 一、实时性与准确性 卫星智慧停车导航系统通过集成全球卫星定位系统(GPS)和地理信息系统(GIS)&#xff0c;能够实时…

Redis 持久化策略

Redis 提供了多种持久化机制&#xff0c;用于将数据保存到磁盘中&#xff0c;以防止因服务器重启或故障而导致的数据丢失。主要的持久化策略有两种&#xff1a;RDB (Redis Database) 和 AOF (Append Only File)&#xff0c;即当 Redis 服务器重新启动时&#xff0c;会读取相应的…

自研地面站!自主开源无人飞行系统 Prometheus V2 版重大升级详解

自主开源无人飞行系统 Prometheus V2 相对于 Prometheus V1 在多方面做了重大的升级&#xff0c;今天我们将聊聊 Prometheus V2 的地面站升级。 地面站的重大提升 熟悉 Prometheus 的小伙伴们可能知道&#xff0c;V1 版本是没有专门的地面站的。而在 Prometheus V2 中&#x…

【MAVEN学习 | 第2篇】Maven工程创建及核心功能

文章目录 一. 基于IDEA的Maven工程创建1.1 Maven工程GAVP属性&#xff08;1&#xff09;GroupID 格式&#xff08;2&#xff09;ArtifactID 格式&#xff08;3&#xff09;Version版本号格式&#xff08;4&#xff09;Packaging定义规则 1.2 IDEA构建Maven JavaSE工程1.3 IDEA构…

大模型培训 AUTOWEBGLM:自动网页导航智能体

大语言模型&#xff08;LLMs&#xff09;在智能代理任务中发挥着重要作用&#xff0c;尤其是在网络导航方面。然而&#xff0c;现有的代理在真实世界的网页上表现不佳&#xff0c;主要原因网络导航代理面临着三大挑战&#xff1a;网页上行动的多样性、HTML文本的处理限制以及开…

数据结构6---树

一、定义 树(Tree)是n(n>0)个结点的有限集。当n0时成为空树,在任意一棵非空树中: 1、有且仅有一个特定的称为根(Root)的结点; 2、当n>1时,其余结点可分为m(m>日)个互不相交的有限集T1、T2、...、 Tm&#xff0c;其中每一个集合本身又是一棵树&#xff0c;并且称为根的…

模块化沙箱

模块化沙箱是什么&#xff1f;模块化沙箱有什么作用&#xff1f; 模块化沙箱是一种高灵活性和高扩展性的数据安全产品&#xff0c;通过选择不同的沙箱模块&#xff0c;满足不同的安全需求。 同时&#xff0c;模块化沙箱也是零信任的重要一环&#xff0c;根据企事业单位各类国…

11、鸿蒙学习—UDID获取方法

一、手机的UDID获取方法如下&#xff1a; 1、打开“设置 > 关于手机”&#xff0c;多次点击版本号&#xff0c;打开开发者模式。 2、打开“设置 > 系统和更新”&#xff0c;在最下方找到“开发人员选项”&#xff0c;打开“USB调试”开关。 3、使用PC连接手机后&#…

网红和主播们是用的什么美颜工具?深入剖析美颜sdk与美颜Api

在现代社交媒体和直播平台的兴起中&#xff0c;网红和主播们依靠精美的外表吸引大量观众&#xff0c;获得高人气和收益已成为常态。这其中&#xff0c;美颜工具起到了至关重要的作用。这篇文章将深入剖析网红和主播们常用的美颜工具&#xff0c;特别是美颜SDK和美颜API的原理和…

想要成为程序员,首先你需要掌握这这三种编程语言!

作为程序员&#xff0c;掌握多种编程语言是非常有价值的&#xff0c;因为不同的编程语言有不同的优势和适用场景。然而&#xff0c;要指定“必须掌握”的三种编程语言是相当主观的&#xff0c;因为这取决于个人的职业目标、所在行业的需求以及技术趋势。不过&#xff0c;以下三…

NodeJs实现对本地 mysql 数据库的增删改查

写在前面 今天我们接着写nodejs对数据库的操作&#xff0c;今天实现简单的增删改查&#xff0c;读之前请先移步到这里NodeJs 连接本地 mySql 数据库获取数据,避免后续一些代码出险阅读断层。 安装 nodemon npm install nodemon因为 nodejs 的服务是本地启动&#xff0c;避免后…

数据治理工程师CDGA备考心得、时间安排、题库资源

1.写在前面 之前做一些数据质量控制、元数据、主数据相关工作&#xff0c;一直忙于工作&#xff0c;没有去往考证的方面想&#xff0c;去年年底心血来潮就决定考一考&#xff0c;证多不压身嘛&#xff08;也有部分学生向我咨询&#xff09;&#xff0c;资源在文章结尾&#xff…

图说SpringCloudStream消息驱动

SpringCloud Stream消息驱动实现原理 通过定义Binder绑定器作为中间层&#xff0c;实现了应用程序和消息中间件之间实现细节的隔离。通过向应用程序暴露统一的Channel通道&#xff0c;可以让应用程序不再需要考虑各种不同的消息中间件实现的兼容性问题。当需要升级消息中间件&a…

【软件测试入门】测试用例经典设计方法 — 因果图法

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、因果图设计测试用例的步骤 1、分析需求 阅读需求文档&#xff0c;如果User Case很复杂&am…

光大证券-放量恰是入市时:成交量择时初探

核心算法 1. 在熊市中&#xff0c;各成交量时序排名出现的频次基本随排名变小而单调增大&#xff1b;在牛市中&#xff0c;各成交量时序排名出现的频次基本随排名变小而单调减少&#xff1b;而在震荡市中&#xff0c;各成交量时序排名出现的频次两头大&#xff0c;中间小&…

C语言----C语言内存函数

1.memcpy--内存拷贝--使用和模拟实现 //memcpy基本格式&#xff1a; // 目标空间地址 原空间地址 被拷贝的字节个数 //void *memcpy(void * destination, const void * source,size_t num); //因为内存拷贝拷贝的数据有&#xff1a;整型数据、结构…

三丰云免费虚拟主机和免费云服务器评测

今天我要向大家推荐一款非常优秀的云服务提供商&#xff0c;那就是三丰云。三丰云提供了免费虚拟主机和免费云服务器&#xff0c;为用户提供了便捷高效的云计算服务。首先&#xff0c;让我们来看看三丰云的免费虚拟主机服务。三丰云的免费虚拟主机提供了稳定可靠的服务器资源&a…

【ClickHouse】副本、分片集群 (六)

副本 副本的目的主要是保障数据的高可用性&#xff0c;即使一台ClickHouse节点宕机&#xff0c;那么也可以从其他服务器获得相同的数据。 https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/replication/ 副本写入流程 写入流程如图-18所示: 图-18 写…

信息系统项目管理师 | 信息系统安全技术

关注WX&#xff1a;CodingTechWork 信息安全概念 安全属性 秘密性&#xff1a;信息不被未授权者知晓。完整性&#xff1a;信息是正确的、真实的、未被篡改的、完整无缺。可用性&#xff1a;信息可以随时正常使用。 安全分层 设备安全 设备的稳定性&#xff1a;在一定时间…