我写了一个程序,它应该从字符串中删除多余的空格。但它只在空格前显示字符。它找到一个空格并检查之后的字符是否是空格。根据多余的空格,它将其他字符移动到多余的空格上。但是输出非常混乱。
输入:“qwe(2 个空格)rt(一个空格)y”
输出:“qwe(一个空格)rt(一个空格)y”
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
int main(){
string a;
cin >> a;
int len = a.length();
int new_len=len;
int z,s=0;
for(int i=0; i<new_len; i++){
if(a[i]==' '){
z=i+1;
s=0;
//Assigning the number of excess spaces to s.
while(a[z]==' '){
s++;
z++;
}
//doing the shifting here.
if(s>0){
for(int l=i+1; l<new_len-s; l++){
a[l]=a[s+l];
}
}
new_len-=s;
}
}
cout << a << endl;
cout << a.length();
system("pause");
return 0;
}