string strip(const string &s, const string &chars = "")
{
if (s.empty())
return s;
string s1 = s;
if (chars.empty()) //默認爲空字符
{
string::iterator siter = s1.begin();
while (siter != s1.end())
{
if (isspace(*siter))
siter = s1.erase(siter);
else
break;
}
if (s1.empty())
return s1;
siter = s1.end();
while (siter != s1.begin())
{
if (isspace(*--siter))
siter = s1.erase(siter);
else
break;
}
}
else
{
string::iterator siter = s1.begin();
while (siter != s1.end())
{
if (chars.find(*siter) != string::npos)
siter = s1.erase(siter);
else
break;
}
if (s1.empty())
return s1;
siter = s1.end();
while (siter != s1.begin())
{
if (chars.find(*--siter) != string::npos)
siter = s1.erase(siter);
else
break;
}
}
return s1;
}
string lstrip(const string &s, const string &chars = "")
{
if (s.empty())
return s;
string s1 = s;
if (chars.empty()) //默認爲空字符
{
string::iterator siter = s1.begin();
while (siter != s1.end())
{
if (isspace(*siter))
siter = s1.erase(siter);
else
break;
}
}
else
{
string::iterator siter = s1.begin();
while (siter != s1.end())
{
if (chars.find(*siter) != string::npos)
siter = s1.erase(siter);
else
break;
}
}
return s1;
}
string rstrip(const string &s, const string &chars = "")
{
if (s.empty())
return s;
string s1 = s;
if (chars.empty()) //默認爲空字符
{
string::iterator siter = s1.end();
while (siter != s1.begin())
{
if (isspace(*--siter))
siter = s1.erase(siter);
else
break;
}
}
else
{
string::iterator siter = s1.end();
while (siter != s1.begin())
{
if (chars.find(*--siter) != string::npos)
siter = s1.erase(siter);
else
break;
}
}
return s1;
}