C++ 取出字符串中的所有整数
2023-03-07 09:13:44 时间
谭浩强 C++程序设计(第三版)P189 第16题
输入一个字符串,内有数字和非数字字符,如
a123x456_17960?302tab5876
将其中连续的数字作为一个整数,依次存放到一个数组a中。统计总共有多少个整数,并输出这些数。
这个问题是比较好解决的,主要是三步
- 开辟一个
int a[(n+1)/2];
大小的整数数组a,(n+1)/2 是字符串中能够包含的至多个整数了。 初始化一个数字统计int total = 0;
,用来累计出现过的数字总数。 - 遍历字符串,比对是否是数字,如果是 压入栈中,如果不是,将栈逐步清空并将取出的若干个数字计算为十进制数,其中每次出栈,将进制+1,则可以顺利求出。 每次得出一个新整数,
total++
。 - 以total为终,遍历a并输出。
#include <iostream>
#include <stack>
using namespacing std;
int getNumberFromStack( stack &s ){ // 传递引用
int level = 1;
int number= 0;
while( !stack.empty() ){
number += stack.top() * level;
stack.pop();
level *= 10;
}
return number;
}
int main(){
string s;
cout << "请输入一个字符串,如a123x456_17960?302tab5876。\n";
cin >> s;
int a[ (s.size() + 1)/2 ];
int total = 0;
stack<int> numberStack;
for( unsigned int i =0; i< s.size(); i++ ){
if( s[i]<='9' && s[i]>='0' ){
numberStack.push( s[i]-0 );
}else if( !numberStack.empty() ){
a[total++] = getNumberFromStack( numberStack );
}
}
// 输出全部数字
for( int k=0; k < total; k++ ){
cout << a[k] << "\n";
}
return 0;
}
相关文章
- ORM哪家强?java,c#,php,python,go 逐一对比, 网友直呼:全面客观
- 2年实战!如何高效且稳定的在领英开发客户?
- 如何使用知行之桥搭建SFTPServer
- 技术汇总:第六章:分布式自增长ID
- 电解电容器如何失效?预防技巧整理
- 采购RFID固定资产管理系统需要注意哪些方面?
- 技术汇总:第五章:使用angularjs做首页三级分类
- 【玩转Docker】使用Docker部署alertmanager并配置prometheus告警
- 科技创新塑造饮料企业未来,瓴犀采购系统合同协同助力企业签约更高效
- XINDOO的2022年年终总结
- [oeasy]python0066_控制序列_光标位置设置_ESC_逃逸字符_CSI
- 东方甄选、遥望网络和交个朋友,三大直播电商MCN有什么不同?
- 快速构建和安装干净的 ESXi 8 镜像指南
- R语言使用bootstrap和增量法计算广义线性模型(GLM)预测置信区间|附代码数据
- R语言对推特twitter数据进行文本情感分析|附代码数据
- R语言使用Bass模型进行手机市场产品周期预测|附代码数据
- 垃圾分类智能分析系统
- 国产潮玩出海拓荒
- Uniswap/FORSAGE(佛萨奇)系统开发,小公排佛萨奇2.0源码开发搭建
- 最强大脑(量化交易)合约版系统开发源码(搭建部署)