用%20替换空格

Jon*_*ony 2 c++ arrays

以下程序用%20替换所有空格.编译工作正常,但程序在运行时终止.任何帮助???

#include<iostream>
#include<string>
using namespace std;

void removeSpaces(string url){

int len=url.length();
int i,count=0;
while(i<=len){
if(url[i]==' ')
count++;
i++;
}
int length2=len+(count*2);
string newarr[length2];
for(int j=len-1;j>=0;j--){
if(url[j]==' ')
{
  newarr[length2-1]='0';
  newarr[length2-2]='2';
  newarr[length2-3]='%';
  length2=length2-3;
}
else
{
  newarr[length2-1]=url[j];
  length2=length2-1;
}
}
cout<<"\nThe number of spaces in the url is:"<<count;
cout<<"\nThe replaced url is:"<<newarr;

}

int main(){

string url="http://www.ya h o o.com/";
removeSpaces(url);
}
Run Code Online (Sandbox Code Playgroud)

Bri*_*ach 6

这被称为"一个一个"的错误.

while(i<=len){
    if(url[i]==' ')
Run Code Online (Sandbox Code Playgroud)

我还看std::string::find()std::string::replace(),而不是你在做什么.

编辑:既然海报说这不是作业:

for (size_t pos = myString.find(' '); 
     pos != string::npos; 
     pos = myString.find(' ', pos))
{
    myString.replace(pos, 1, "%20");
}
Run Code Online (Sandbox Code Playgroud)