C++STL中去除前后空格的操作
s.erase(0,s.find_first_not_of(" "));//去除前导空格
s.erase(s.find_last_not_of(" ") + 1);//去除后导空格
判断一个字符是数字还是字母的方法
isalnum() 用来判断一个字符是否为英文字母或数字,相当于 isalpha(c) || isdigit(c)
isalpha() 用来判断一个字符是否是英文字母,相当于 isupper(c)||islower(c)
删除字符函数
从位置pos=10处开始删除,直到结尾
// 删除位置的元素
str.erase(10);
// 从位置pos=6处开始,删除4个字符
str.erase(6, 4);
截取字符`
//从0开始pos个
s1=s.substr(0,pos);
//从pos+1开始到最后
s2=s.substr(pos+1);
string用法可以参考这个文章:
https://blog.csdn.net/weixin_39774682/article/details/111168146?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link
class Solution {
public:
bool isxiaoshu(string s)
{
bool flag=true;
bool dot=false;
int i=0;
if(s[i]=='+'||s[i]=='-') s=s.substr(1);
if(s.length()==0) flag=false;
int j=s.length()-1;
int k;
for(k=i;k<=j;k++)
{
if(s[k]=='.')
{
if(dot==true)
{
flag=false;
break;
}
else
{
dot=true;
}
if(k==j&&s[i]=='.')
{
flag=false;
break;
}
}
else if(!isdigit(s[k]))
{
flag=false;
break;
}
}
return flag;
}
bool iszhengshu(string s)
{
bool flag=true;
int i=0;
if(s[i]=='+'||s[i]=='-') s=s.substr(1);
if(s.length()==0) flag=false;
int j=s.length()-1;
int k;
for(k=i;k<=j;k++)
{
if(!isdigit(s[k]))
{
flag=false;
break;
}
}
return flag;
}
bool isNumber(string s) {
s.erase(0,s.find_first_not_of(" "));//去除前导空格
s.erase(s.find_last_not_of(" ") + 1);//去除后导空格
bool f=false;
int pos;
bool ans;
for(int i=0;i<s.length();i++)
{
if(s[i]=='E'||s[i]=='e')
{
f=true;
pos=i;
break;
}
}
if(f==false)
{
ans=isxiaoshu(s);
}
else
{
string s1,s2;
s1=s.substr(0,pos);
// cout<<"s1 "<<s1<<endl;
s2=s.substr(pos+1);
//cout<<"s2 "<<s2<<endl;
ans=isxiaoshu(s1)&&iszhengshu(s2);
}
return ans;
}
};