从键盘上输入一串数值字符串,将其转换成对应的数值输出。考虑正负和其他字符。

如输入"-123",则输出为-123。若输入不合法,请给出提示信息。程序运行结果如下图所示。

#include <iostream>
#include <string>
using namespace std;


    int main(){   
        string s;
       
        while(getline(cin,s)){ //循环输入,ctrl+z结束循环.不需要循环输入,可去掉while大循环
            //cout<<s<<endl;//调试用
            int i=0;
            int flag=0;//有符号数及输入是否合法标志
            int res=0;
            if(s[0]=='-'||s[0]=='+'){//判断是否带符号,不需要判断+号,可去掉条件
                flag=1;//设置正负号标志
                i=1;
            }
            while(i!=s.size()){//对字串进行逐位判断
                if(s[i]>='0'&&s[i]<='9'){ //是数字字符
                    //cout<<s[i]<<endl; //调试用
                    res=10*res+(s[i]-'0');
                }
                else{//含有非数字字符,输入不合法
                    cout<<"输入错误!"<<endl;
                    flag =-1;//设置不合法标志值
                    break;  //退出判断循环
                }
                ++i;                
            }
            if(flag==1){//是带符号数,输出
                cout<<s[0]<<res<<endl;//输出符号s[0]及数字结果res,如果不需要判断+号,可以
                //改为cout<<-res<<endl;需要中文说明,请自行添加
            }
            if(flag==0){//是不带符号数,输出.需要中文说明,请自行添加
                cout<<res<<endl;
            }     
        }
     
        return 0;
    }

温馨提示:答案为网友推荐,仅供参考
相似回答