
用%20三个字符替换字符串里的空格,C++程序,有谁知道怎么改?错误是字符串数组越界了!!
#include<iostream>#include<string>usingnamespacestd;stringreplaceBlank(stringstr){int...
#include<iostream>
#include<string>
using namespace std;
string replaceBlank(string str)
{
int n=str.length()-1;//不包括'\0'
if(str.empty()||n<=0) //判断字符串是否为空
return 0;
int numb=0;
for(int i=0;i<n;i++) //空格数计算
if(str[i]==' ')
numb++;
int numnewl=n+numb*2-1;
while(numnewl+1>n && n>=0)
{
if(str[n]==' ')
{
str[numnewl--]='0';
str[numnewl--]='2';
str[numnewl--]='%';
}
else
{
str[numnewl--]=str[n-1];
}
--n;
}
return str;
}
int main()
{
string str1;
cout<<"请输入字符串:";
getline(cin,str1);
cout<<"初始字符串为:"<<endl;
cout<<str1<<endl;
string str2;
str2=replaceBlank(str1);
cout<<"转换后的字符串为:"<<endl;
cout<<str2<<endl;
system("PAUSE");
return 0;
} 展开
#include<string>
using namespace std;
string replaceBlank(string str)
{
int n=str.length()-1;//不包括'\0'
if(str.empty()||n<=0) //判断字符串是否为空
return 0;
int numb=0;
for(int i=0;i<n;i++) //空格数计算
if(str[i]==' ')
numb++;
int numnewl=n+numb*2-1;
while(numnewl+1>n && n>=0)
{
if(str[n]==' ')
{
str[numnewl--]='0';
str[numnewl--]='2';
str[numnewl--]='%';
}
else
{
str[numnewl--]=str[n-1];
}
--n;
}
return str;
}
int main()
{
string str1;
cout<<"请输入字符串:";
getline(cin,str1);
cout<<"初始字符串为:"<<endl;
cout<<str1<<endl;
string str2;
str2=replaceBlank(str1);
cout<<"转换后的字符串为:"<<endl;
cout<<str2<<endl;
system("PAUSE");
return 0;
} 展开
2个回答
展开全部
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s="a b c";
int i,j=0;
char *str;
for(i=0;s[i];i++)
{
if(s[i]==' ')j++;//计算空格数
}
str=new char[i+3*j+1];
for(i=0,j=0;s[i];i++)
{
if(s[i]==' ')
{str[j++]='%';str[j++]='2';str[j++]='0';}
else str[j++]=s[i];
}
str[j]=0;
cout<<str<<endl;
delete str;
return 0;
}
2014-04-29
展开全部
好复杂啊。。。。
string replaceBlank(string str)
{
string tmp = str;
for(unsigned int i = 0; i < tmp.length(); i++)
{
if(tmp.c_str()[i] == ' ')
{
string head = tmp.substr(0, i);
string buffer = tmp.substr(i + 1);
tmp = head + "%20" + buffer;
}
}
return tmp;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询