一开始想的就是用一个string来存str中的字符,并替换空格。后来发现函数是void,无返回值,不知所措。后来看评论知道了c_str()函数。C++中的C_str()函数用法文中有详细介绍。
方法一(自己修改):
void replaceSpace(char *str, int length)
{
string ch;
for (int i = 0; i < length; i++)
{
if (str[i] == 32)
{
ch.push_back('%');
ch.push_back('2');
ch.push_back('0');
}
else
ch.push_back(str[i]);
}
auto ret = ch.c_str();
strcpy(str,ret);
}
方法二(评论中,目前感觉最好的):
void replaceSpace(char *str,int length) {
string s(str);
int i=0;
while((i=s.find(' ',i))>-1){
s.erase(i,1);
s.insert(i,"%20");
}
auto ret=s.c_str();
strcpy(str,ret);
}