利用C++从C继承来的字符函数库cctype来实现去除字符串左右两边的空格、制表符、换行符
包含头文件cctype,调用函数isspace
...
#include <cctype>
void TrimLeft(char **chsrc)
{
for(int i = 0 ; i < strlen((*chsrc));)
{
char ch = (*chsrc)[i];
if(isspace(ch))//如何是返回true
(*chsrc) += 1;
else
break;
}
}
void TrimRight(char **chsrc)
{
for(int i = strlen((*chsrc)) - 1 ; i >= 0 ;i = strlen((*chsrc)) - 1)
{
char ch = (*chsrc)[i];
if(isspace(ch))
(*chsrc)[i] = 0;
else
break;
}
}
void Trim(char **chsrc)
{
TrimLeft(chsrc);
TrimRight(chsrc);
}
char *chspace = new char[128];
memset(chspace,0,128);
//cin.getline(chspace,128);
sprintf(chspace,"\r\n123 456 \r\n");
//cin >> chspace;
cout << strlen(chspace)<< endl;
cout << "----------Trim-------------"<<endl;
Trim(&chspace);
cout << chspace << "***长度:" << strlen(chspace) << endl;
delete []chsapce;
system("pause");
return 0;
如果参数是string类型,则利用迭代器删除
- using namespace std;
- string trim(string s){
- if(s.empty())
- return s;
- s.erase(0,s.find_first_not_of(" "));
- s.erase(s.find_last_not_of(" ") + 1);
- return s;
- }
- int main(){
- string s = " Hello World!! ";
- cout << s << " size:" << s.size()<<"\n";
- cout << trim(s) << " size:" << trim(s).size() <<"\n";
- return 0;
- }