確かにそれらをmain()
で定義し、参照によって渡すことができます。しかし、それはうんざりです。
この状況を分析する場合は、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);
}
しかし、あなたの機能はまた、このようなエラー表示として、何か他のもの、またはいくつかの他の代替結果を返す必要があります場合、これはより多くの仕事になり、そしてより多くの書き換えでしょう。あなたがここに戻された追加情報のいずれかの種類が、これは単にparse_results
クラスに追加することができます持っている必要がある場合は、次に
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;
}
:関数がクラスを返すようにするために
最も柔軟なアプローチがあります。
@なぜ 'main'の変数を関数で使うことができないのでしょうか?(もちろん引数として渡すことを意味します) – KostasRim
文字列を関数に渡す必要があるため、関数に文字列を入力したり、関数の中からペアのようなものを渡す必要があります。 – NathanOliver