#include <iostream> #include <string> using std::cout; using std::endl; using std::string; char &get_val(string &str, string::size_type ix){ return str[ix]; } int main(int args, char*argv[]){ string inputStr=argv[1]; cout << "you input: " << inputStr << endl; get_val(inputStr,1)='b'; cout << "now, input become: " << inputStr << endl; return 0; }
之前看到ROS里面, 居然有函数的返回值为xx &, 蒙了(这就是我为什么学C++的原因), 看了几天书, 意思是返回值为一个引用, 特别适合当"左值"(书上说的), 妈的, 你直接写一个函数, 把要替换的值传进去不完了么...
#include <iostream> #include <string> using std::cout; using std::string; using std::endl; void changeStr(string& str, int ix, char replaceChar){ str[ix]= replaceChar; } int main(int args, char*argv[]){ string inputStr = argv[1]; cout << "you input " << inputStr << endl; changeStr(inputStr, 1, 'c'); cout << "now it became " << inputStr << endl; return 0; }
上面的方法一样治疗肾虚, 异曲同工.
但是会Java的我不仅想问, string & str跟string str作为形参, 有啥分别?因为Java里面是没有这个&这个东西的, 最起码我不知道有这个东西, 我试验了一下, 在C++/C 里面加这个, 理论上, 直接把形参给改变了, 妈的, 我写了上万行的C, 可以说从来没用过这个&....