【发布时间】:2017-12-23 03:50:07
【问题描述】:
我正在尝试解决关于 CTCI 的 Q1.3:编写一个方法来用 '%20' 替换字符串中的所有空格。您可以假设字符串末尾有足够的空间来容纳额外的字符,并且给定了字符串的“真实”长度。
我在 main 上运行我的函数并且它可以工作,但是当我通过 main 传递函数时,我不断得到原始字符串“Mr. John Smith”而不是“Mr%20John%20Smith”。这是我的代码。
int main(int argc, const char * argv[]) {
string test = "Mr John Smith ";
int length = 13;
URLify(test, length);
cout << test << endl;
return 0;
}
void URLify(string a, int length){
string b = a;
int counter = 0;
for(int i=0;i<length;i++){
if(b[0] != ' '){
a[counter]= b[0];
counter++;
}
else{
a[counter] = '%';
a[counter+1] = '2';
a[counter+2] = '0';
counter = counter + 3;
}
}
}
【问题讨论】:
-
将 reference 传递给字符串,这样您就可以更改原来的:
void URLify(string& a, int length).