CTCIでQ1.3を解決しようとしています:文字列内のすべてのスペースを '%20'に置き換える方法を書いてください。追加の文字を保持するために文字列の最後に十分なスペースがあり、文字列の「真の」長さが与えられていると仮定できます。C++ void関数が文字列の値を変更しない
mainで関数を実行しても機能しますが、mainで関数を渡すと "Mr%20John%20Smith"の代わりに元の文字列 "Mr. John Smith"が得られます。ここに私のコードです。
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