以下程序用%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)
这被称为"一个一个"的错误.
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)