输出一个字符串中的数值
Description
输出一个字符串中的数值(数值溢出输出“overflow”),每2个数值之间用空格分隔。 不要求处理符号。前导0不能输出,026应该输出26。 例如:
输入:5Pw4e++3h1DdA–735b6)0NF002bye 输出:5 4 3 1 735 6 0 2
Input
一个全部由可打印字符组成的字符串(但含有<回车>和<换行>),长度可能很长。
Output
将该字符串中的所有数值分别输出,如果数值超过int可以表示的范围,则输出overflow,每2个数值之间用空格分隔。
Sample Input 1
ge040k4Q+71bXfg7
3[-55O2g7t9922345605P9
Sample Output 1
40 4 71 7 3 55 2 7 overflow 9
源码
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <climits>
#include <vector>
using namespace std;
int main()
{
//freopen("input/outputstring.txt","r",stdin);
char a;
long long num=0;
vector<int> vi;
bool flag=false,flag1=false;
while(a=getchar())
{
if(isdigit(a))
{
flag=true;
if(flag1) continue;
num=num*10+a-'0';
if(num>INT_MAX) flag1=true;
}
else
{
if(flag)
{
if(flag1) vi.push_back(-1);
else vi.push_back(num);
flag=false;
flag1=false;
num=0;
}
}
if(a==EOF) break;
}
for(int i=0;i<vi.size();i++)
{
if(vi[i]==-1) printf("overflow");
else printf("%d",vi[i]);
printf("%c",(i==vi.size()-1)?'\n':' ');
}
return 0;
}