你當然可以在main()
中定義它們並通過引用傳遞它們。但這是sl。。
如果你要分析這種情況,firstsplit
和secsplit
是你的函數計算。
因此,你的函數應該做的是返回這些值。這是一個函數的功能:它計算一些東西並返回它。
這樣做的一種方法是簡單地返回std::pair
。
std::pair<std::string, std::string> strParse(const string& a) { //parse line read input
int b = a.find("-");
std::string firstsplit = a.substr(0, b);
std::string secsplit = a.substr(b + 1);
return std::make_pair(firstsplit, secsplit);
}
但是,這將導致更多的工作,更重寫,如果你的功能可能還需要返回別的東西,或其他一些替代性的結果,如錯誤指示。
最靈活的做法,是由函數返回一個類:
class parse_results {
public:
std::string firstsplit;
std::string secsplit;
};
parse_results strParse(const string& a) { //parse line read input
parse_results ret;
int b = a.find("-");
ret.firstsplit = a.substr(0, b);
ret.secsplit = a.substr(b + 1);
return ret;
}
然後,如果你需要有什麼樣的位置返回更多的信息,這可以簡單地添加到parse_results
類。
@爲什麼如果你定義'main'中的變量不能在函數中使用(暗示你將它們當作參數傳遞)? – KostasRim
您可能需要將字符串傳遞到函數中,以便您可以填充它們,或者您需要將它們從函數中傳遞出來,形成一對。 – NathanOliver