当前位置: 首页 > news >正文

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

前言:

在C/C++程序中,会需要把数字与字符串做出互相转换的操作,用于实现程序想要的效果。下面将介绍多种方法实现数字与字符串互相转换。

字符串转为数字

一、利用ASCII

我们知道每个字符都有一个ASCII码,利用这一点可以将字符-'0'转为数字。在字母大小写转换时也可以利用这个性质。

#include<iostream>
#include<cstring>
using namespace std;
char ch[]={'1','2','3','4','5'};
int main(){for(int i=0;i<strlen(ch);i++){cout<<ch[i]-'0'<<" ";}return 0;
}

 输出int类型的1,2,3,4,5


二、stoi()

stoi函数是C++标准库中的一个函数,用于将字符串转换为整数,针对于string类型的。stoi函数是C++11引入的,因此只有在C++11及以上的版本中才能使用该函数。如果你的编译器版本较老,不支持C++11,那么就无法使用stoi函数。学校机房的dev-C++一般是C98标准的,需要自己手动改成C11。

int num=stoi(const string&  str, size_t* idx = 0, int base = 10);

其中,str是需要转换的字符串;idx是一个指向size_t类型的指针,用于保存转换结束的位置;base是进制,默认为10进制。一般只给传第一个参数即可,也可以利用此函数实现进制转换。

类似的还有stol()、stof()、stod(),分别将字符串类型转换成long long、float、double类型。

#include<iostream>
#include<cstring>using namespace std;
string s="12345";
int main(){int a=stoi(s);long long b=stol(s);double c=stod(s);float d=stof(s);cout<<"int:"<<a<<endl;cout<<"long long:"<<b<<endl;cout<<"double:"<<c<<endl;cout<<"float:"<<d<<endl;return 0;
}


三、atoi()

atoi()函数是C语言中的一个函数,主要用于将字符串转换为整数。针对于字符数组,类似的还有atol()、atof()、atod()。

int num=atoi(const char *str);

其中,str是一个以null结尾的字符串,表示要转换的整数。

该函数将从字符串的开头开始解析,直到遇到第一个非数字字符为止。如果开头是一个正号或负号,它也会解析为整数的一部分。如果字符串中的第一个非空格字符不是有效的数字字符或正负号,则返回0。

#include<iostream>
#include<cstring>using namespace std;
char s1[]="12345";
char s2[]="qwe";
int main(){int a=atoi(s1);long long b=atol(s2);cout<<"int:"<<a<<endl;cout<<"long long:"<<b<<endl;return 0;
}


四、sscanf()

sscanf函数是一个用来将字符串按照指定格式解析的函数。它接受一个输入字符串和一个格式字符串作为参数,并根据格式字符串的指示将字符串中的数据解析为对应的变量中。主要是针对于字符数组。

sscanf(str,"%d",&num);//str字符数组,%dint类型,num转换完成数字

代码应用如下:

#include<iostream>
#include<cstring>using namespace std;
char s1[]="12345";
char s2[]="qwe";
int main(){int a;long long b;sscanf(s1,"%d",&a);sscanf(s2,"%lld",&b);//转字母会成乱码cout<<"int:"<<a<<endl;cout<<"long long:"<<b<<endl;return 0;
}


五、stringstream

stringstream是C++中的一个类,可以用来对字符串进行输入输出操作。它是基于字符串的流,可以用来将字符串转换为其他类型的数据,以及将其他类型的数据转换为字符串。stringstream类的头文件是<sstream>,我们需要包含这个头文件才能使用stringstream类。

#include<iostream>
#include<sstream>
#include<cstring>
#include<typeinfo>using namespace std;
int main(){stringstream ss;string s="12345";int num;ss<<s;//将字符串读入字符串流 ss>>num;//从字符串流中读取数据转换为整数cout<<typeid(num).name()<<" "<<num<<endl;return 0; 
}


数字转为字符串

一、利用ASCII

字符转数字可以-'0',数字转字符那么就可以+'0',还是利用了ASCII码值的特性。

#include<iostream>
#include<cstring>
using namespace std;
int nums[]={1,2,3,4,5};
int main(){for(int i=0;i<sizeof(nums)/sizeof(int);i++){cout<<nums[i]+'0'<<" ";}return 0;
}

注意:转换结果为49 50 51 52 53 ,对应ASCII码值,因为原理就是用ASCII码转换的。


一、to_string()

to_string函数是C++标准库提供的一个函数,用于将不同类型的数据转换为字符串。可以将int、float、double、long long等类型转换为string类型。需要包含头文件#include<cstring>

#include<iostream>
#include<cstring>
using namespace std;
int a=24;
long long b=12345678;
double c=3.1415;
string s;
int main(){s=to_string(a);cout<<s<<endl;s=to_string(b);cout<<s<<endl;s=to_string(c);cout<<s<<endl;return 0;
}


二、itoa()

itoa函数用于将整数转换为字符串。类似的还有ltoa、ftoa、dtoa分别将long long、float、double转换为字符串类型。针对于字符数组。

itoa(num,str,10);

第一个参数是待转换的数字,第二个参数是转换完成的字符数组,第三个是转换的进制数,默认10进制。

#include<iostream>
#include<cstring>
using namespace std;
int n=12345;
char str[10];
int main(){itoa(n,str,10); cout<<str<<endl;return 0;
}

 结果为12345


三、sprintf()

sprintf()函数是c语言库中的函数,可以将数字转换为字符串类型,一般转换为字符数组。

sprintf(str,"%d",num);

str是转换完成的字符数组,%d是类型,num是待转换的数字。 

#include<iostream>
#include<cstring>
using namespace std;
int n=12345;
char str[10];
int main(){sprintf(str,"%d",n); cout<<str<<endl;return 0;
}

结果为:12345


 四、stringstream

与字符串转数字的一样,可以互相转换,同时还是要包含头文件<sstream>,具体使用如下

#include<iostream>
#include<sstream>
#include<cstring>
#include<typeinfo>using namespace std;
int main(){stringstream ss;string s="12345";int num=54321;ss<<num;//将int类型的数据写入字符串流中s=ss.str();//将字符串流中的数据转换为string类型cout<<typeid(s).name()<<" "<<num<<endl;return 0; 
}


本篇到此为止,感谢大家支持。

相关文章:

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

前言&#xff1a; 在C/C程序中&#xff0c;会需要把数字与字符串做出互相转换的操作&#xff0c;用于实现程序想要的效果。下面将介绍多种方法实现数字与字符串互相转换。 字符串转为数字 一、利用ASCII 我们知道每个字符都有一个ASCII码&#xff0c;利用这一点可以将字符-0…...

[Spring] Spring AOP

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…...

鸿蒙 webview 实现顶部 Progress进度条

1, 先看效果 2, 直接cv代码 import web_webview from ohos.web.webview;interface PerUrl {url: string,age: number } Component export struct webviews {controller: web_webview.WebviewController new web_webview.WebviewController();ports: web_webview.WebMessageP…...

Pytest-BDD实现接口自动化测试,并附全部代码

引言 在之前的文章中简单的介绍了怎么使用Pytest-BDD进行接口测试&#xff0c;可以参考《pytest-bdd 行为驱动自动化测试》。本篇文章主要介绍使用Pytest-BDD实现接口自动化测试。后面的文章会介绍生成测试报告&#xff0c;和流程性接口测试。 feature文件 首先我们先整理好…...

Sqli-labs-master靶场--布尔盲注

目录 1、布尔盲注 2、布尔盲注的流程&#xff08;以靶场less-8为例&#xff09; 2.1输入id尝试是否存在注入点 2.1.1通过以上尝试&#xff0c;联想到可能是布尔盲注 2.2猜测数据库长度 2.3获取数据库名 2.3.1python脚本获取 代码&#xff1a; 获取结果为&#xff1a; …...

【QGroundControl二次开发】十. QT添加GStreamer视频播放同时保存

上一章介绍使用QT播放GStreamer视频流 【QGroundControl二次开发】八. QT实现播放gstreamer视频。 这章介绍如何在原有基础上保存为视频,同时保存为一个个规定大小的小视频。 先展示代码: #include <QApplication> #include <QWidget> #include <QtConcurrent…...

double类型 精度丢失的问题

前言 精度丢失的问题是在其他计算机语言中也都会出现&#xff0c;float和double类型的数据在执行二进制浮点运算的时候&#xff0c;并没有提供完全精确的结果。产生误差不在于数的大小&#xff0c;而是因为数的精度。 一、double进行运算时,经常出现精度丢失 0.10.2使用计算…...

C++ 重要特性探究

shared_from_this 使用分析 场景 类的成员函数需要获取指向自身的shared_ptr的时候类成员函数传递shared_ptr给其他函数或者对象的时候&#xff0c;目的是为了管理对象生命周期使用方法 首先类必须继承 std::enable_shared_from_this<T>必须使用 shared_from_this 获取指…...

c++_游戏_狼人杀

思路主要包括以下几个部分&#xff1a; 角色分配&#xff1a;代码中通过随机数的方式给狼人、平民、预言家和法师等角色进行分配&#xff0c;保证每个角色的数量和身份的随机性。 游戏进行&#xff1a;根据狼人、平民、预言家和法师等角色的身份&#xff0c;游戏进行了夜晚和白…...

MySQL——数据类型、索引的建立、数据的约束

文章目录 数据类型索引的建立普通索引唯一索引使用ALTER 命令添加和删除索引使用ALTER 命令添加和删除主键显示索引信息 数据的约束非空约束&#xff1a;not null&#xff0c;值不能为null唯一约束&#xff1a;unique&#xff0c;值不能重复主键约束&#xff1a;primary key外键…...

常见框架漏洞详解③!!

Apache Apache 是世界使⽤排名第⼀的 Web 服务器软件。它可以运⾏在⼏乎所有⼴泛使⽤的计算 机平台上&#xff0c;由于其跨平台和安全性被⼴泛使⽤&#xff0c;是最流⾏的 Web 服务器端软件之⼀。 apache⽬录结构&#xff1a; bin&#xff1a;存放常⽤命令⼯具&#xff0c;如h…...

大数据基础知识

大数据&#xff08;Big Data&#xff09;是指无法用传统数据处理工具和技术有效处理的大规模、复杂的数据集。大数据技术通过对这些数据进行存储、处理和分析&#xff0c;从中提取有价值的信息和见解。 1. 大数据的特点 大数据通常具有以下四个主要特点&#xff0c;被称为“4…...

SQL Server 的透明数据加密

透明数据加密是SQL Server数据库安全众多特性中的一个&#xff0c;本文只针对透明数据加密。 在此测试之前&#xff0c;已经按照文档如何快速获得一个测试用SQL Server企业版创建了一个SQL Server 2019&#xff0c;并按照文档为SQL Server安装示例数据库AdventureWorks安装了…...

Windows图形界面(GUI)-MFC-C/C++ - 列表视图(List Control) - CListCtrl

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 列表视图(List Control) - CListCtrl 创建列表视图 设置列表视图属性 成员函数 注意事项 示例代码 列表视图(List Control) - CListCtrl 创建列表视图 在对话框编辑器中&#xff…...

一机两用的简单介绍

电子政务外网终端使用过程的风险与挑战 1、终端防护弱&#xff0c;失陷风险大 政务外网终端具备访问互联网能力&#xff0c;造成政务外网终端极易感染僵木蠕病毒&#xff0c;破坏正常办公 政务外网终端易被攻击失陷&#xff0c;成为从互联网攻击政务外网的跳板机 2、VPN漏洞…...

uniapp离线打包热更新失败-AndroidStudio离线打包apk后无法下载打开-热更新失败-plus.runtime.install失败

效果图 仅安卓 前言 1.plus.runtime.install一直fail(20240808), uni.openDocument可以打开本地apk文件 2.权限问题需小心 跑通前提 1.先确定apk地址有效&#xff0c;浏览器中手动下载可安装 2.确保已添加离线打包AndroidStudio的“android.permission.INSTALL_PACKAGES”权…...

深植根基、蓬勃向上 | openKylin 2.0正式发布!

2024年8月8日&#xff0c;openKylin 2.0版本正式发布&#xff01;该版本默认搭载Linux 6.6 LTS内核&#xff0c;完成180操作系统核心组件自主选型升级&#xff0c;深度融合AI技术&#xff0c;上线麒麟AI助手等实用AI功能&#xff0c;并为用户带来包括开明软件包格式、不可变系统…...

【Material-UI】按钮组:尺寸与颜色详解

文章目录 一、按钮组概述1. 组件介绍2. 基本用法 二、按钮组的尺寸&#xff08;Sizes&#xff09;1. 小尺寸&#xff08;Small&#xff09;2. 中等尺寸&#xff08;Medium&#xff09;3. 大尺寸&#xff08;Large&#xff09; 三、按钮组的颜色&#xff08;Colors&#xff09;1…...

app抓包 burp配置

证书导出 模拟器安装证书 点击安装证书 将证书直接拖进来就行 配置代理 打开浏览器抓包...

图像与像素:利用ImageJ分析荧光显微镜图像|QuPath基础教程1|24-08-08

内容概要 数字图像由像素组成&#xff0c;每个像素具有一个数值&#xff0c;通常与检测到的光线相关。相同的像素值可以通过不同的方式进行显示。在科学图像处理中&#xff0c;可以通过修改查找表来独立于像素值改变图像外观。 一、引言 图像由其最小的组成单位——像素构成。…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

实战设计模式之模板方法模式

概述 模板方法模式定义了一个操作中的算法骨架&#xff0c;并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下&#xff0c;重新定义算法中的某些步骤。简单来说&#xff0c;就是在一个方法中定义了要执行的步骤顺序或算法框架&#xff0c;但允许子类…...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...

结构化文件管理实战:实现目录自动创建与归类

手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题&#xff0c;进而引发后续程序异常。使用工具进行标准化操作&#xff0c;能有效降低出错概率。 需要快速整理大量文件的技术用户而言&#xff0c;这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB&#xff0c;…...

React父子组件通信:Props怎么用?如何从父组件向子组件传递数据?

系列回顾&#xff1a; 在上一篇《React核心概念&#xff1a;State是什么&#xff1f;》中&#xff0c;我们学习了如何使用useState让一个组件拥有自己的内部数据&#xff08;State&#xff09;&#xff0c;并通过一个计数器案例&#xff0c;实现了组件的自我更新。这很棒&#…...