题解:字符串转整数

最近刚学了正则表达式和STL就碰见了这道题

在没学习正则和STL之前 我可能会直接暴力遍历提取把~

但是现在有了更为巧妙的两种方法

挺有意思的~

方法一:正则表达式

这里引用一下正则表达式的说明:正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

真的很强大,感兴趣可以学习一哈哈~~

思路

  • 先将字符串左侧的空格去除

    while(str[0]==' ') str.erase(0,1);
    
  • 利用正则表达式提取

    smatch tmpMatch;//储存匹配的正则
    
    regex tmpRegex("^[\\+\\-\\d]\\d*"); //c++中要用\\进行转义
    
    regex_search(str, tmpMatch, tmpRegex);//提取
    
  • 转化成long

    Stringstream ss;//流 
    
    string tmpStr = tmpMatch[0];
    
    ss << tmpStr;
    
    cout << tmpStr << endl;
    
    long longResult;
    
    ss >> longResult;
    
  • 判断是否越界

     result = max(min(longResult, long(INT_MAX)), long(INT_MIN));
    
  • 返回值 result

    方法二:直接使用输入输出流

这就是STL的魅力~

if(s.size()==0) return 0;

   stringstream a;

   int n;

   a<<s;

   a>>n;

   return n;