C++程序设计 (第三版) 谭浩强 习题6.16
习题 6.16 输入一个字符串,内有数字和非数字字符,如a123x456u17960? 302tab5876 将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a[1]。。。统计共有多少个整数,并输出这些数。
IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。
代码块
#include <iostream>
#include <string>
using namespace std;
void inputStr(string *str){
cout<<"Enter String: ";
getline(cin, *str);
}
void countNum(string *str){
int *num = new int[80];
int sign = 0;
int i, j, temp;
int sum = 0;
for(i = 0, j = 0; i < str->length(); i++){
if((*str)[i] >= '0' && (*str)[i] <= '9'){
sign = 1;
temp = (*str)[i] - '0';
sum = sum * 10 + temp;
}
else if(sign == 1){
num[j++] = sum;
sign = 0;
sum = 0;
}
if(sign == 1 && i + 1 == str->length()){
num[j++] = sum;
sign = 0;
sum = 0;
}
}
cout<<"Total Numbers: "<<j<<endl;
for(int i = 0; i < j; i++){
cout<<num[i]<<" ";
}
cout<<endl;
delete []num;
}
int main(){
string *str = new string;
inputStr(str);
countNum(str);
delete(str);
system("pause");
return 0;
}