如何用c/c++把一个字符串把里边的数字提取出来

给定一个数字字符串,把这个串里边的连续数字提取出来放到另外一个整型数组中一个单元中,如"abc123v34ghajkg4568"把123放到b[0]中,34放到b[1]中... 给定一个数字字符串,把这个串里边的连续数字提取出来放到另外一个整型数组中一个单元中,如"abc123v34ghajkg4568"把123放到b[0]中,34放到b[1]中,4568放到b[2]中。要求写一个函数实现数字的提取,函数的参数一个是指向字符串的指针,一个是指向整型数组的指针。 展开
 我来答
四舍五不入6
高粉答主

2019-10-09 · 醉心答题,欢迎关注
知道答主
回答量:147
采纳率:100%
帮助的人:2.1万
展开全部

给定一个数字字符串,把这个串里边的连续数字提取出来放到另外一个整型数组中一个单元中:

#include<iostream>

#include<string>

using namespace std;

void tiqu(char*a,int*b)

{

int j=0;

bool key=false;

for(int i=0;i<strlen(a);i++)

{

if(a[i]>='0'&&a[i]<='9')

{

if(key)

b[j] = b[j]*10+a[i]-'0';

else

b[j] = a[i]-'0';

key = true;

}

else

{

if(key)

++j;

key = false;

}}

}

void main()

{

int b[100];

char a[100]="abc123v34ghajkg4568";

tiqu(a,b);

int i=0;

while(b[i++]>=0)

{

cout<<b[i-1]<<endl;

}

}

扩展资料:

1、字符库函数

所在函数库为【ctype.h】

int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0

int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9')

返回非0值,否则返回0

int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0

int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F)

返回非0值,否则返回0

2、数学函数

所在函数库为math.h、stdio.h、string.h、float.h

int abs(int i) 返回整型参数i的绝对值

double cabs(struct complex znum) 返回复数znum的绝对值

double fabs(double x) 返回双精度参数x的绝对值

long labs(long n) 返回长整型参数n的绝对值

参考资料来源:百度百科-C语言函数

TableDI
2024-07-18 广告
作为上海悉息信息科技有限公司的一员,我们专注于提供高效的数据处理解决方案。对于多个文件表格的合并需求,我们通常采用专业的数据整合技术,确保数据的准确性和一致性。通过精确匹配表格字段和格式,我们能够快速、准确地将多个表格合并成一个,为用户提供... 点击进入详情页
本回答由TableDI提供
百度网友96ffcf7
推荐于2017-09-22 · 知道合伙人互联网行家
百度网友96ffcf7
知道合伙人互联网行家
采纳数:22721 获赞数:118722
从事多年网络方面工作,有丰富的互联网经验。

向TA提问 私信TA
展开全部
#include <iostream.h>
int main()
{
    char a[50]="1ab2cd3ef45g";
    char b[50];
    int cnt_index=0,cnt_int=0;
    //cnt_int 用于存放字符串中的数字.
    //cnt_index 作为字符串b的下标.
   
    for(int i=0;a[i]!='\0';++i) //当a数组元素不为结束符时.遍历字符串a.
    {
        if(a[i]>='0'&& a[i]<='9') //如果是数字.
        {
            cnt_int*=10;
            cnt_int+=a[i]-'0'; //数字字符的ascii-字符'0'的ascii码就等于该数字.
        }
       
        else if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')) //如果是字母.
        {
            b[cnt_index++]=a[i]; //如果是字符,则增加到b数组中.
        }
    }
   
    b[cnt_index++]='\0'; //增加字符串结束符.
   
    cout<<b<<endl; //输出字符串. (abcdefg)
    cout<<cnt_int<<endl; //输出数字.(12345)
    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
woshinia777
推荐于2017-09-28 · TA获得超过915个赞
知道小有建树答主
回答量:495
采纳率:0%
帮助的人:348万
展开全部
#include<iostream>
#include<string>
using namespace std;
void tiqu(char*a,int*b)
{
int j=0;
bool key=false;
for(int i=0;i<strlen(a);i++)
{
if(a[i]>='0'&&a[i]<='9')
{
if(key)
b[j] = b[j]*10+a[i]-'0';
else
b[j] = a[i]-'0';
key = true;

}
else
{
if(key)
++j;
key = false;

}}
}
void main()
{
int b[100];
char a[100]="abc123v34ghajkg4568";
tiqu(a,b);
int i=0;
while(b[i++]>=0)
{
cout<<b[i-1]<<endl;
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
milldby
2015-05-25 · TA获得超过2347个赞
知道答主
回答量:441
采纳率:85%
帮助的人:21.4万
展开全部
一. 先用 strstr 找到那行 ;
二. 然后 提取出来 用sscanf进行解析 ;
三. 后面的数字不知道的也可以提取出来 ;
四. 可以用 %d 代替,也可以用 string 和 fstream类 还有 getline、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chichujn
2010-09-13 · TA获得超过663个赞
知道小有建树答主
回答量:1534
采纳率:50%
帮助的人:1097万
展开全部
//支持负数,末尾数字,STL,C++代码。
#include <iostream>
#include <string>
#include <vector>

//string输入,vector输出
void get_int(const std::string& s, std::vector<int>& vi)
{
std::string::size_type size = s.size();
int element = 0;
bool now_digit = false;
bool negative = false;
for(std::string::size_type i=0; i<size; ++i)
{
if(s.at(i)<='9' && s.at(i)>='0')
{
now_digit = true;
element = element*10 + s.at(i)-'0';
}
else
{
if(s.at(i) == '-') negative = true;
else
{
if(now_digit)
{
if(negative) element = -element;
vi.push_back(element);
element = 0;
now_digit = false;
negative = false;
}
}
}
}
if(now_digit)
{
if(negative) element = -element;
vi.push_back(element);
}
}

int main(int argc, char *argv[])
{
std::string s;
std::cin>>s;
std::vector<int> vi;
get_int(s, vi);
std::vector<int>::iterator it = vi.begin();
for(; it!=vi.end(); ++it) std::cout<<*it<<std::endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式