将字符串转换为数字(a_to_i)

article/2025/7/29 15:59:46

大部分人看到这样的题目,觉得很简单,很多人就会写出如下程序:

int My_atoi(const char* str)
{
    int val = 0;
    while(*str != '\0')
    {
        val = val * 10 + *str - '0';
        str++;
    }
    return val;
}

这个程序是没有问题的,但是这只适用于一小部分情况,就是字符串全部是数字,且转换后的数字不会超出整型int的范围,显然这考虑不够全面。

例如:给定一些字符串“a1345676”,“   123456”,“*#3456”,“876#8*74”,“-34567”,“+234.5”,“0x12346”,“03456”,“12345678909876543”,“-2345678987652”......

从这些字符串中可以看出,将一个字符串转换成数字还需要考虑很多方面:字符串以字母、空格、其他符号开始的情况怎么处理?字符串中间夹杂着非数字符号怎么处理?字符串以正负号开始的情况怎么处理?若字符串以“0x”或“0”开始,如何判断并将之转换为十六进制或八进制?若转换后的数字超出整型类型所能表示的范围怎么处理?

若给定的字符串是以非数字的其他字符开始,就需要将这些字符都删除或者跳过,直到遇到可以转换的数字字符;

若给定的字符串以正负号开始,则需要将正负号做个标记,然后按照正数来处理,返回结果是根据标记将结果值做符号的变化;

若给定的字符串中间夹杂着非数字字符,那么当遇到第一个非数字字符,程序就会结束,后面的所有字符便不会再做转换;

若给定的字符串以“0x”/“0X”或者“0”开始,那么就说明这是一个十六进制数字或者八进制数字,需要将它的十六进制或八进制形式转换过来,再将它转换成对应的十进制数字的结果;

若给定的字符串转换成数字以后,超出了整型所表示的范围,可以用long long类型或者是无符号类型来进行判断(下面的代码中采用的是long long定义的方法),若超出最大值表示范围,则只输出最大值,若超出了最小值所表示的范围,则只输出最小值即可;

根据以上情况的解决方法,我们可以知道,转换函数开始就需要判断给定字符是以哪一种情况开始的,在做出相应的转换过程,而且,为了是程序看起来简洁明了,我们可以将转换成十进制、八进制、十六进制的情况单独封装成各自的函数,这样在转换的函数中就可以直接调用。

完整的代码实现如下图所示:


http://chatgpt.dhexx.cn/article/yRG55MB2.shtml

相关文章

java 如何将数值型字符转换为数字_Java 如何将字符串转换为数字 专家详解

在编程中我们经常需要进行各种数据类型之间的转换操作,下面将为您介绍如何将字符串转换为数字。首先我们需要了解各种数据类型的表示,String在java中为字符串类型,int在java中为整数类型,大小在-2147483648到2147483647 之间,long为长整形,可以表示的数值大小比int大很多…

C++中将字符串转换为数字

C中将字符串转换为数字 法一&#xff1a; int t s[len - 1]-0;//减去一个 0 是 将最后一位字母转换成数字例如&#xff1a;这个判断基偶性就是为了防止越界所以将数组转换为数组传入&#xff0c;再将最后一位字母转换位数字判断其基偶性 #include<iostream> using n…

C语言将字符串转换为数字

最近做了一些需要使用字符串形势获取数字的程序&#xff0c;这里就牵扯到了字符串类型和数字类型的转换问题&#xff0c;以下是C语言中&#xff0c;字符串类型转换为数字类型的方法。 1.问题描述 数字既能以字符串形式储存&#xff0c;也能以数值形式储存&#xff0c;把数字储…

C/C++编程笔记:如何将字符串转换为数字,数字转换为字符串?

通常&#xff0c;或更具体地说&#xff0c;在竞争性编程中&#xff0c;有许多情况需要将数字转换为字符串或将字符串转换为数字。但是缺乏某些必不可少的工具的知识使我们不得不这样做。本文介绍了一些实现此任务的方法。 将字符串转换为数字 方法1&#xff1a;使用stringstr…

32程序员面试被拒,嫌弃太老,“大龄程序员”将何去何从

随着互联网的高速发展变革&#xff0c;大龄恐惧症越来越多地在技术圈被人讨论。很多程序员在工作5-10年以后&#xff0c;都会开始思考5年、10年甚至更久以后的自己&#xff0c;会是怎样一种生活工作状态&#xff0c;以及是否会被时代抛弃。 随着前段时间一位32的程序员被拒面试…

大龄程序员的未来在何方,该何去何从?

大龄程序员的界定 老早网上有人说&#xff0c;软件开发干不过30岁&#xff0c;后来又有人说干不过35岁&#xff0c;后来又有人说干不过40岁&#xff0c;后来又有人说干不过45岁……各种说法很多&#xff0c;这里我采取通俗的说法&#xff0c;认为过了30岁的程序员算是大龄程序…

大龄程序员书单

本职专业序列 24小时365天不间断服务: 服务器基础设施核心技术&#xff08;运维基础&#xff09; 云原生基础架构&#xff1a;构建和管理现代可扩展基础架构的模式及实践 企业迁云实践 生产微服务&#xff08;推荐&#xff09; 可伸缩服务架构&#xff1a;框架与中…

大龄程序员

要是写代码写到三十岁没升到管理怎么办啊&#xff1f; 我每天还在写代码&#xff0c;与人讨论技术实现细节&#xff0c;35 岁那年&#xff0c;我写的 Moco 拿了 Oracle 的 Duke 选择奖。 思维误区 我还没开始工作的时候&#xff0c;有人就在说&#xff1a;程序员能做到 30 岁…

35岁的程序员真的到头了么?国外的大龄程序员在干什么?

在Quora有个帖子&#xff1a; 我今年35岁了&#xff0c;是不是太老了&#xff0c;没法加入Google, Facebook, Microsoft 或者 Apple了&#xff1f; 下面的回复让人叹为观止&#xff0c;我摘录几个&#xff1a; 萨特南辛格 Google软件工程师 (2017–present) 不&#xff0c;…

大龄程序员的一次考研之旅

现在程序员的世界越来越卷&#xff0c;如果想拿到一个不错的offer&#xff0c;势必再聊完技术之外&#xff0c;HR也会关注你的学历&#xff0c;是否211&#xff1f;985 &#xff1f;也许有人说&#xff0c;只要技术好就能拿到offer&#xff0c;云云。是的&#xff0c;技术能力确…

35岁大龄程序员职业转型规划

35岁大龄程序员职业转型规划 I. 引言 在当今快速发展的IT行业&#xff0c;程序员这个职业变得越来越重要。但是&#xff0c;对于35岁以上的程序员来说&#xff0c;面临的职业困境也越来越严峻。他们不仅面临着技术的迭代更新&#xff0c;而且还面临着市场的竞争和年轻程序员的…

大龄程序员找工作,为什么这么难?能力与年龄不匹配

背景 今年的金三银四快结束了&#xff0c;公司还在招人&#xff0c;可筛选的人才真是越来越少&#xff0c;于是在简历筛选时&#xff0c;将学历和年龄都适当的放松了。正因为如此&#xff0c;面试了不少大龄的程序员。 网络上一直有讨论大龄程序员找工作困境的话题&#xff0…

35岁以后的大龄程序员,正处于怎样一种状态?

前言 随着互联网的高速发展变革&#xff0c;大龄恐惧症越来越多地在技术圈被人讨论。很多程序员在工作5-10年以后&#xff0c;都会开始思考5年、10年甚至更久以后的自己&#xff0c;会是怎样一种生活工作状态&#xff0c;以及是否会被时代抛弃。 特别是全民创业的这几年&…

大龄程序员的出路究竟在何处?从369个过来人问答贴里,我们得到了答案

前几天&#xff0c;程序员节的到来让程序员这个职业又一次涌上热搜。 在这个特殊的节日&#xff0c;不少大牛也纷纷发表了自己的祝福&#xff0c;其中360创始人周鸿祎通过个人微博发布了相关视频其中关于程序员35岁就会被淘汰的话题引起了程序员们的热议。 在视频中&#xff…

我今年50岁了,还在干前端

程序员圈流传着这样一个段子&#xff1a;35岁之后&#xff0c;干前端去送外卖&#xff1b;搞后端去开滴滴&#xff1b;运维就去买保险…… 招人不要35岁的&#xff0c;裁人清理35岁的&#xff0c;不知道什么时候开始&#xff0c;35岁成了职业生涯的拐点&#xff0c;中年危机逐…

35岁以上的大龄程序员们,后来都干什么去了?

为什么软件开发行业看不见白发苍苍的程序员?大龄程序员都去哪里了?各个公司会辞退大龄程序员吗? 如果一位 50 多岁的程序员申请 20 多岁或 30 多岁的职位&#xff0c;有多少公司会雇用他们呢?关于这个问题&#xff0c;有很多流言传说&#xff0c;也有一些残酷的现实。 当…

知乎热议:35岁的中年危机,大龄程序员该何去何从?

知乎热议&#xff1a;什么样的程序员在35岁以后依然被公司抢着要? 程序员圈子里一直流传着一个魔咒&#xff1a;35 岁的中年危机。 他们说&#xff0c;35 岁程序员的精力和体力会无法避免地下降; 他们说&#xff0c;35 岁程序员的丰富经验没有年轻员工的创新活力吃香; 他们说&…

大龄程序员的8种出路

首先我会讲下年龄焦虑的本质&#xff0c;然后会谈谈大龄程序员的8种出路&#xff0c;最后会聊聊如何选择自己的方向。欢迎大家流言讨论。 年龄焦虑的本质是竞争力不足 所有和我聊年龄的程序员&#xff0c;聊到最后&#xff0c;都会确认这个事实&#xff1a;所谓年龄焦虑&#…

C#动态生成treeview目录树

思路&#xff1a; 获取全量树结构数据通过递归动态添加树子节点 动态生成目录树 TreeView 在这里我第一步就无需复述了&#xff01;主要是返回如下格式数据 //调用生成目录树方法 DepartmentTree.initDeptTree(this.deptTv.Nodes, deptList); //初始化目录树数据 //初始化…

JAVA 生成文件目录树-json串

效果如图&#xff1a; 代码如下&#xff1a; 比较简陋但应该能用 package com.b.api;import com.alibaba.fastjson.JSON;import java.io.File; import java.util.ArrayList; import java.util.List;/*** 读取文件目录生成json串*/ public class GenerateJsonByFiles {public s…