之前遇到一个问题,要求把一行带空格和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; //总字符串长度减1
i--; //从刚才修改改的地方重新开始查找
}
}
for(int i=0;i<n;i++)
{
cout<<a[i];
}
cout<<'\n';
system("pause");
return 0;
}
如果少了上面那个i–;就会出现空格或tab中的任意两个放在一起识别不出来的情况。就像下面这样
我在字符之间放了两个空格,其他同理。