c++中在字符串中提取数据

在字符串中提取数据是编程中必不可少的环节。c语言中字符串是通过char数据实现的,c++帮我们封装好了string这个类型,我们直接通过这个类型来声明字符串。

#include<iostream>
#include<string>
#include<stdlib.h>

using namespace std;
int main(){
	string s = "4155d6";
	char c = s[0];
	int a = atoi(&c);
	int b = atoi(&s[1]);
	cout<<a<<endl<<b<<endl;
	cout<<a+b<<endl;
	return 0;
}

atoi是c语言的函数,其参数是一个指向char类型的指针,处在stdlib.h中。

运行结果如下:

要特别注意,能得到4只是恰好取的第一个数,假如我想取第二个数1,令 c = s[1];atoi()后是得不到1的,得到的是41.

这就和c++的内存管理有关了,因为char c只是声明了一个指针,指向了s的某个位置。要想得到我们想要的字符,必须的char c = new char(s[1]),再atoi后就可以得到1.

两个数之和为159说明它们都已成功转化为int型。

值得注意的是,b得到了从索引1开始的所有数字,并将它们整体转化为一个数。

而a的由来,我是先将string中的字符赋给一个char,然后再把这个char的地址传入。这样得到的就是一个数字。

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值