题解:字符串转整数
最近刚学了正则表达式和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;