1. 程式人生 > >使用引用形參返回額外資訊

使用引用形參返回額外資訊

一個函式只能返回一個值,但是呢,有時候函式需要同時返回多個值,引用形參為我們一次返回多個結果提供了有效的途徑:

來一個例子,直接上程式碼:

先說明函式功能:一個函式,返回string物件中的某個字元第一次出現的位置,同時得知該字元總共在string物件中出現的次數,函式中有詳細說明。

#include<iostream>
#include<string>
using namespace std;

string::size_type FindChar(const string &s, char c, string::size_type &count)
{
	auto ret = s.size();  //字串總長,來控制迴圈,同時初始化初始化ret
	count = 0;
	for (decltype(ret) i = 0; i != s.size(); ++i)  //decltype獲取ret的型別
	{
		if (s[i] == c)
		{
			if (ret == s.size())  //巧妙使用ret == s.size() 去控制字元C第一次出現,以後都不在統計
				ret = i;
			++count;   //上邊if只是第一次進去一次,之後都不在進 以後遇到C都只加count
		}
	}
	return ret;
}

void Test()
{
	string s1("lilililililililililili");
	
	string::size_type Count = 0;;
	auto index = FindChar(s1,'l',Count);
	cout << "第一次出現的位置:" << index << endl;
	cout << "Count = " << Count << endl;
}

int main()
{
	Test();
	return 0;
}
表面看似只完成一個任務:即返回了string物件中某個字元出現的第一個位置,但是由於我們用來統計次數的變數時一個引用形參,在函式外可以直接訪問,引用形參不會因為出函式作用域而消失;

來自:C++Primer;