Ben*_* D. 3 c++ string vector pass-by-reference
我最近看到以下代码块作为对这个问题的回答:在C++中拆分一个字符串?
std::vector<std::string> &split(const std::string &s, char delim, std::vector<std::string>
&elems) {
std::stringstream ss(s);
std::string item;
while(std::getline(ss, item, delim)) {
elems.push_back(item);
}
return elems;
}
Run Code Online (Sandbox Code Playgroud)
为什么返回传递的引用数组"elems"在这里如此重要?我们不能使这个为void函数,或者返回一个整数来表示成功/失败吗?我们正在编辑实际的阵列,对吧?
谢谢!
通过返回对传入的对象的引用,您可以在一个表达式中进行一些链接或级联,并始终使用相同的向量.有些人觉得这个很有用:IE
std::vector<std::string> elems;
std::cout << "Number of items:" << split("foo.cat.dog", '.', elems).size();
// get just foo
std::cout << "First item is:" << split("foo.cat.dog", '.', elems)[0];
// change first item to bar
split("foo.cat.dog", '.', elems)[0] = "bar";
Run Code Online (Sandbox Code Playgroud)