C++如何判断一个string字符串,是否是数字

来源:互联网 发布:淘宝联盟官方发单助手 编辑:程序博客网 时间:2024/04/28 12:24
  1. #include <iostream>  
  2. #include <string>  
  3. #include <sstream>  
  4. using namespace std;  
  5.    
  6.    
  7. bool isnum(string s)  
  8. {  
  9.         stringstream sin(s);  
  10.         double t;  
  11.         char p;  
  12.         if(!(sin >> t))  
  13.         /*解释: 
  14.             sin>>t表示把sin转换成double的变量(其实对于int和float型的都会接收),如果转换成功,则值为非0,如果转换不成功就返回为0 
  15.         */  
  16.                return false;  
  17.         if(sin >> p)  
  18.         /*解释:此部分用于检测错误输入中,数字加字符串的输入形式(例如:34.f),在上面的的部分(sin>>t)已经接收并转换了输入的数字部分,在stringstream中相应也会把那一部分给清除,如果此时传入字符串是数字加字符串的输入形式,则此部分可以识别并接收字符部分,例如上面所说的,接收的是.f这部分,所以条件成立,返回false;如果剩下的部分不是字符,那么则sin>>p就为0,则进行到下一步else里面 
  19.           */  
  20.                 return false;  
  21.         else  
  22.                 return true;  
  23. }  
  24.    
  25. int main()  
  26. {  
  27.         string s;  
  28.         while(cin >> s)  
  29.         {  
  30.                 if(isnum(s))  
  31.                         cout << s << " is a number." << endl;  
  32.                 else  
  33.                         cout << s << " is not a number." << endl;  
  34.         }  
0 0