0

これを説明するのは少し難しいですが、最善を尽くします。オプションを受け取る関数があるとしましょう。そのオプションは、最初は文字列になります。このようなもの:

コマンドオプション="何とか何とか"

ここで、オプションは でしたblah blah blah

ここで、文字列を別の型に「変換」する (キャストしない)方法を開発者に提供したいと考えています。boolまたはなどの基本的な型に対して独自の「トランスレーター」を実装intします。たとえば、次のようになります。

コマンド recursive="true"

また

コマンドライン=7

おそらくファンクターを使用して、開発者がそれらをオーバーライドしたり、新しいものを指定したりできるようにします(私はC++ 11を使用しているため、wonderfulを使用しても問題ありませんfunctional)。

問題は、これを実装する方法について受け入れられるアイデアがまだ見つからないことです。C++ に関する私の知識に基づいていくつかのことを試しましたが、これは間違いなく「完全」ではなく「許容範囲」ですが、それらの多くは機能しなかったか、行き詰まってしまいました。つまり、いくつかの汚いトリックを使用できますが、これには最もエレガントなソリューションが必要です(もちろん、タイプセーフです)。

私はあなたとのろくでなしではないことを願っています。お時間をいただきありがとうございます。

よろしく、カルリッシュ

4

1 に答える 1

0

文字列から整数に変換するには、atoi.

std::string strValue = "1245";
int intValue = atoi(strValue.c_str());

またはC++ 11で使用できます

int intValue = std::atoi(strValue.c_str());

ブール値に変換するには、文字列を比較するだけで開始できます

bool boolValue = strValue == "true";
于 2013-04-20T21:58:05.397 に答える