#include<stdio.h>
#include<string.h>
#include <pthread.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <stack>
#include <stdlib.h>
#include <sstream>
#include <ctype.h>
using namespace std;
int main()
{
string s("[email protected]@");
/* //用时0.111s
for(decltype(s.size())index=0; index!=s.size();)
{
if(ispunct(s[index]))
{
for(decltype(s.size())j=index; j<s.size(); j++)
s[j]=s[j+1];
s.erase(s.end()-1);
}
else
index++;
}*/
string result;
//0.078s
bool haspunct=false;
for(decltype(s.size())index=0;index!=s.size();index++){
if(ispunct(s[index])){
haspunct=true;
}
else{
result+=s[index];
}
}
cout<<haspunct<<" "<<result<<endl;
return 0;
}
第一种方法,对于每个符号,将后面的所有字符向前移动一个位置;第二种方法,新建一个string,保存不为符号的字符。