之前遇到一个问题,要求把一行带空格和tab的字符串中的空格和tab去掉,看了很多人的博客,但没看懂,然后自己又想了想,算是解决了,这个应该算比较简单的了
大概效果就是这样
那现在上代码吧,
#include<iostream>#include<string>using namespace std;int main(){string a;getline(cin,a);//读入整行字符串int n=a.length(); //判断字符串的长度for(int i=0;i<n;i++) {if(a[i]=='\t'||a[i]==' ') // 找字符串中的空格和tab{for(int j=i;j<n-1;j++) //找到之后将后面的字符串都往前挪一位{a[j]=a[j+1]; } n=n-1; //总字符串长度减1i--; //从刚才修改改的地方重新开始查找}} for(int i=0;i<n;i++) {cout<<a[i]; } cout<<'\n'; system("pause"); return 0;}
如果少了上面那个i–;就会出现空格或tab中的任意两个放在一起识别不出来的情况。就像下面这样
我在字符之间放了两个空格,其他同理。