我想解決CTCI上的Q1.3:編寫一個方法,用'%20'替換字符串中的所有空格。您可能會認爲該字符串在末尾有足夠的空間來容納附加字符,並且您將得到該字符串的「真實」長度。C++ void函數不改變字符串的值
我在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;
}
}
}
將一個**引用**傳遞給字符串,所以你可以改變原來的:'void URLify(string&a,int length)'。 – BoBTFish