C++中字符与数字的转化方法

c++字符数值之间的转换函数(全网最全) string类型数值 1.【字符串转换为数值】 记忆小技巧:s看成是string 类型 to是转化 后边的是转化为的类型 i : int u:unsigned l:long f:float d:double string和数值转换 转换类型 to_string(val) 把val转换成string stoi(s,p,b) 把字符串s从p开始转换成b进制的int stol(s,p,b) 把字符串s从p开始转换成b进制的long stoul(s,p,b) 把字符串s 阅读详情

一、string → int

1. 利用 ASCII 码差值计算

定义一个 string 类型字符串 s ,我们可以根据 ACSII 码表得知:
字符 ‘0’ - ‘0’ = 0 ,‘1’ - ‘0’ = 1 ,‘2’ - ‘0’ = 2…以此类推可知

s[i] - ‘0’ = s[i]表示的那个整数

依次将得出的整数加入 a*10 中,便可得到最后想要的整数结果

string s = "123";
int a = 0;
for (int i = 0; i < s.size(); i++) {  //从高位到低位
    a = a * 10 + (s[i] - '0');         //*10 让个位空出,将新的低位整数加入进去
}

根据代码,可以看出这是一个 O[n] 的算法,其中 n = s.size(); 在处理 s 长度较大的情况时,单是字符串的转化就会耗费巨大的时间

2. 利用位运算实现

string s = "123";
int a = 0;
for(int i = 0; i < s.size(); i++){
	a = a * 10 + (s[i] ^ 48); 
}

这种方法与利用 ASCII 码差值计算的方法没有什么差别,仅对 s[i] - ‘0’ 的语句进行卡常性质的优化

3. 使用C++标准库中的函数atoi

string s = "123";
int a = atoi(s.c_str());

其他数据类型也有类似函数,如浮点型 atof() , long 型 atol()
利用标准函数库中的函数可以快速有效地实现 string 向 int 的转化

a = atoi("123");                               //a = 123

a = atoi("123aaa");                            //a = 123,数字后的非数字字符会被自动忽略

a = atoi("+123");
a = atoi("-123");                              //a = 123(-123),+、-属于合法符号

a = atoi("-1111111111111111111111111111111111");
a = atoi("1111111111111111111111111111111111");//传入一个超长的数字字符串是非法的(正数负数都是)

a = atoi("aaa123");                            //数字前含有非数字且非正负字符是非法的

a = atoi("NULL");
a = atoi("");                                  //传入一个空字符串或空指针都是非法的

4. 用 sstream 头文件中定义的字符串流对象实现转换

istringstream is("123");
int a;
is >> a; // 从 is 流中读入一个 int 整数存入 a 中

插播一下字符串流stringstream–<sstream>详解

二、int → string

1. 利用位运算实现

注意:该方法仅限于单个字符与数字间的转化(字符串不易操作,复杂度较高,并不适合作为字符与数字的转化的算法使用)

char c = '8';
a = c ^ 48;

2. 使用C++标准库中的函数

int a = 123;
string s = to_string(num);

和 atoi 相同的是,当需要转化的数据过大时,也可能出现非法情况

3. 用 sstream 头文件中定义的字符串流对象实现转换

ostringstream os;            // 构造一个空的输出字符串流
int a = 123;
os << a;                     // 向输出字符串流中输出 a 的内容
string s = os.str();         // 利用 str 函数获取流中的内容
C++字符串整数的相互转换 【2023keep秋招笔试】输入一个整数,可以改变数字的顺序,但只能把两个数字呼唤,在只能交换1次或0次顺序的情况下,输出所能组成的最大值。 阅读详情

相关推荐

SoC低功耗设计实战:28nm工艺下四核A7的Hierarchical Flow全流程解析

本文深入解析了在TSMC 28nm工艺上,采用Hierarchical Flow(层次化流程)实现四核Cortex-A7 SoC低功耗设计的全流程。文章从项目背景切入,详细探讨了基于UPF的电源规划、时钟树综合、接口时序收敛以及物理验证等关键环节,分享了使用Cadence Innovus等工具进行低功耗物理实现的实战经验挑战。

weixin_29231263的博客 279

c++字符串数字的实例方法

C++字符串转化为数字的库函数 1、atoi 功 能:把一字符串转换为整数 用 法:int atoi(const char *nptr); 详细解释:atoi是英文array to integer 的缩写。atoi()会扫描参数nptr字符串,如果第一个字符不是数字也不是正负号返回零,否则开始做类型转换,之后检测到非数字或结束符 /0 时停止转换,返回整型数。 参 数: *nptr: 待转化字符串。 返回值: int: 转换后的整形数。 2、atol 功 能:把一字符串转换为长整形 用 法:long atol(const char *nptr); 详细解释:atol()会扫描参数nptr字符

高级用法:LangChain 安全防护(Guardrails)

在调用开始时校验请求,可做关键词过滤、身份校验、限流等。= "human":return {}],# 使用],= "human":return {}],

Long_像风一样自由 299

【C /C++实战篇】C++ 字符串数字相互转换, C字符串数字函数 atoi()、atof();字符串数字函数stoi()、stol()、stof();数字字符串to_string()、

本文介绍了C/C++字符串数字相互转换的常用方法。在C语言中,可以使用atoi()、atof()等函数将字符串转为数字;在C++中,stoi()、stof()等string类方法更为方便。数字字符串方面,C++11提供了to_string()方法,也可使用sprintf()或自定义函数实现。文章还展示了如何通过字符串流控制浮点数转换精度,并比较了不同方法的适用场景和特点。这些转换技巧在日常编程中非常实用,开发者可根据具体需求选择合适的方法

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1万+

C++ 字符串数字之间的相互转换

能完成字符串数字转换的方法多种多样: 1.使用string自带函数 数字字符串:to_string() 字符串数字:stoi()、stol()、stof()、stod()等等 例: int i = 42; string s = to_string(i); double d = stod(s); 字符串数字的各个函数还可以选择从字符串的哪个位置开始转换,转换成整型量还可以选择不同的进制,具体见C++primer 328页。 2.使用stringstream 首先要包含sstream头文件,这个类继承

LYQ的博客 1万+

C++ 字符串数字相互转化方法总结归纳

C++ 字符串数字相互转化方法总结归纳 一、sscanf和sprintf sscanf(源字符串,格式,目的变量) 字符串数组转化为数字 理解为string + scanf sprintf(目的字符串,格式,源变量) 数字转化为字符串数组 理解为string + printf 例如: #include &amp;lt;cstdio&amp;gt; int main(){ int n; char...

SM20155201314的博客 2219

C/C++ 字符串数字相互转化方法小结

1. 字符串 --> 数字 ato: atoi(), atol(), atoll(), atof() strto: strtol(), strtoul(), strtod() strto 是 ato 的升级版: (1) strto 支持转化成多种进制 (2) ato 对错误情况的处理很不完善, strto 对完善了错误处理 2. 数字 --> 字符串 (1) sprint

码农 3158

字符串字符数组,数字相互转化

1.字符数组转字符串 #include<iostream> #include<string> using namespace std; int main(){ char str[5]={'a','b','c','d'}; string s1(str);//声明时赋值转化 cout<<s1<<endl; string s2; s2=str;//直接赋值转化 cout<<s2<<endl; return 0; }

Anterior_condyle的博客 4240

「 每日一练,快乐水题 」1945. 字符串转化后的各位数字之和

首先,用字母在字母表中的位置替换该字母,将 s 转化 为一个整数(也就是,‘a’ 用 1 替换,‘b’ 用 2 替换,…‘z’ 用 26 替换)。接着,将整数 转换 为其 各位数字之和。转化:“zbax” ➝ “(26)(2)(1)(24)” ➝ “262124” ➝ 262124。转换 #1:262124 ➝ 2 + 6 + 2 + 1 + 2 + 4 ➝ 17。给你一个由小写字母组成的字符串 s ,以及一个整数 k。转换 #2:17 ➝ 1 + 7 ➝ 8。返回执行上述操作后得到的结果整数。

谁吃薄荷糖 1083

C/C++数字字符串之间的转化

数字字符串之间的转化 在C中: 方法: C标准库中的sprintf,sscanf 字符串数字 sscanf   #include&lt;stdio.h&gt; //字符串数字 void Testsscanf() { //字符串转化为整数 char str1[] = "1234567"; int a; sscanf(str1,"%d",&amp;a); printf("%d...

smile_zhangw的博客 6167

C++字符(串)(int)整数和浮点型小数的相互转化方法,几乎全面适用的

数字转化为字符串字符串转化为整数,atoi()函数,sprintf()函数,stringstream类,atof()函数,字符串转换成小数。

wcj_______的博客 688

字符串 数字 相互转化

【代码】字符串 数字 相互转化

woshinadie的博客 317

C++操作手册】将字符串转化为数字数字转化为字符串字符转化为数字数字转化为字符

字符串转化为数字 string s = "123"; cout << stoi(s) << endl; 数字转化为字符串 int a = 123; cout << to_string(123); 字符转化为数字 这里说的转化为数字,不是将字符转为对应的ASCII编码,而是将’1’就是变为数值1,而不是49 char a = '1'; cout << stoi(string(1, a)); 数字转化为字符 只针对位数为1的数字 int a = 1; cou

CSDN 精品推荐 554

C++字符字符串数字,小写,大写的相互转化

1.字符转化为浮点型数字 #include<stdlib.h> atof(*a);//atof里面必须是指针 例如:char b; char *a=&b; double c=atof(a)即可把字符b转化为浮点型数字; 2.字符串转化为整形数字 #include<stdlib.h> atoi(*a); 例如:char b; char *a=&b; int c=atoi(a)即可把字符b转化为整型数字; 3.数字转化为字符 int a; ch

qmyxhs的博客 961

c++ 字符串数字相互转换

日常编码过程中,字符串数字进行相互转换是常见的需求,下面我们总结一下在c++中,字符串数字的转换都是如何来进行操作的。首先看看,在c语言的风格中,我们怎么做到把字符串转为数字。 注意上述代码是在namespace为std的环境中运行。 atoi, atof函数,均在stdlib.h中进行了声明,在头文件中,其声明的函数原型为 不难看出,上面这些方法的输入均为const char *,即字符串,得到的输出为转化以后的各种数值类型。 2.字符串数字c++风格 上面代码也是在namespace为std的环

bitcarmanlee的博客 3万+

C/C++编程笔记:如何将C ++字符串转换为数字?三种方法教给你

通常,或更具体地说,在竞争性编程中,有许多情况需要将数字转换为字符串或将字符串转换为数字。但是缺乏某些必不可少的工具的知识使我们不得不这样做。本文介绍了一些实现此任务的方法。 将字符串转换为数字 方法1:使用字符串流类或的sscanf() 方法2:字符串使用转换Stoi旅馆()或的atoi() 这两种方法进行了详细的讨论此文章。 方法3:使用boost词汇表转换 Boost库提供了一个内置函数“ lexical_cast(“ string”)”,该函数直接将字符串转换为数字。如果输入无效,则

致力于C语言C++知识分享! 1万+

C++字符串如何转数字&&数字如何转字符串

如果第一个字符数字的话,函数遵从从前向后的转换顺序,截出相连接的数字字符(可以包含一个或多个小数点,如果小数点在第一位,会自动补0)构成的最大位数的子串;否则如果不能执行有效转换,返回0;如果第一个字符数字的话,函数遵从从前向后的转换顺序,截出相连接的数字字符构成的最大位数的子串;如果第一个字符数字的话,函数遵从从前向后的转换顺序,截出相连接的数字字符构成的最大位数的子串;如果第一个字符数字的话,函数遵从从前向后的转换顺序,截出相连接的数字字符构成的最大位数的子串;

北邮22级信通一枚 7875

C/C++数字字符串互相转换

C/C++数字字符串类型转换大全,具有多种方法,总有一个会让你喜欢

闻道有先后,术业有专攻 1万+

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

法一: int t = s[len - 1]-'0';//减去一个 '0' 是 将最后一位字母转换成数字 例如:这个判断基偶性就是为了防止越界所以将数组转换为数组传入,再将最后一位字母转换位数字判断其基偶性 #include<iostream> using namespace std; int main() { int n; cin >> n; string s; while (n--) { cin >> s; int len = s.length(

qq_46906413的博客 2万+

C/C++编程笔记:C++中的atol(),atoll()和atof()函数

1、atol() 此函数将作为参数传递给函数调用的C类型字符串转换为长整数。它解析C字符串str,将其内容解释为整数,并作为long int类型的值返回。该函数丢弃出现在字符串开头的空白字符,直到找到非空白字符为止。如果C字符串str中的非空白字符序列不是有效的整数,或者由于str为空或仅包含空白字符而不存在这样的序列,则不执行任何转换并返回零。 句法: long int atol(const char * str) 参数:该函数接受一个强制性参数str,它表示整数。 返回值:该函数将转换后的..

致力于C语言C++知识分享! 6119

Java项目-基于Springboot+Vue的银行OA系统的设计实现(源码+数据库脚本+部署视频+代码讲解视频+全套软件)

【基于Springboot+Vue的银行OA系统的设计实现】高分通过项目,已获导师指导。本项目是一套基于Springboot+Vue的银行OA系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。也可作为课程设计、期末大作业包含:项目源码、数据库脚本、开发说明文档、部署视频、代码讲解视频、全套软件等,该项目可以直接作为毕设使用。项目都经过严格调试,确保可以运行!项目详情:https://blog.csdn.net/u011832806/article/details/139717116

上一篇: C++中. 和 -> 的区分
M·Plain
博客等级 码龄4年 0粉丝 2原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值