如同在你的程序中你不能返回在函數內部聲明的變量的引用,因爲當函數完成執行時,該函數中聲明的所有變量將被釋放和刪除。
所以在這種情況下,每次函數調用時都會得到null
或garbage value
。
對於此我認爲您可以在該函數中使用pass your string argument as a reference
。 所以,通過使用這個,你可以在你的變量中獲得你想要的值。
或 您還可以將函數的返回類型更改爲std::string
。
我認爲你必須使用此功能爲:
map<int,string> mymap;
//Assume there are some key value pair in above map
void ReturnKey(int &a, string& str)
{
map<int,string>::iterator iter = mymap.find(a);
if(iter not_eq mymap.end())
{
str = itr->second;
}
}
或者,您可以爲您的操作的狀態返回std::string
值。 如下:
map<int,string> mymap;
//Assume there are some key value pair in above map
std::string ReturnKey(int &a)
{
std::string ret;
map<int,string>::iterator iter = mymap.find(a);
if(iter not_eq mymap.end())
{
ret = iter->second;//I think this will make copy
}
else{
delete ret;
return null;
}
return ret;
}
和#include <string>
應該被使用。
希望這會幫助你。
'return iter-> second;' – Brian
@BrianBi如果找不到它? – EmptyData
複製一個空字符串幾乎沒有成本 – Brian