2016-08-26 8 views
2

はなぜC++標準にはstd :: from_string()がないのはなぜですか?

template <typename T> 
T std::from_string(const std::string& s); 

ありませんか? (std::to_string()の機能の表示方法を参照してください)

PS - これは採用/考慮されていなかった理由がある場合は、単に答えて/コメントし、それが何であるかを明示してください。私は実際にこれが標準に含まれるという提案をしていません。

+0

['std :: stoi'](http://en.cppreference.com/w/cpp/string/basic_string/stol)とファミリ。 – NathanOliver

+0

@NathanOliver:それは同じことではありません。 – einpoklum

+3

"[なぜ' std :: sto'シリーズはテンプレートではありませんか?](http://stackoverflow.com/questions/37920924/why-is-the-stdsto-series-not-a-template) "興味がある。 – Quentin

答えて

0

std::to_string()は、テンプレート化されていないオーバーロードの明確なセットで構成されており、各オーバーロードはたやすく文字化可能なタイプです。したがって、を正確にはの機能を実行するために定義するのは簡単です。

std::from_string()の提案ははるかに広いです。これは、エラー処理の考慮事項、精度設定などのような厄介なコーナーを持つでしょう。この種のことを行う既に利用可能なストリーム関数はおそらく十分です。

+1

なぜこれは演算子>>とistreamsで持っているものよりも難しいでしょうか? – einpoklum

+1

istreamには精度と基数を調整するためのあらゆる種類の修飾子があります。これは単一の関数でカプセル化するのが難しいでしょう。 – Bathsheba

+0

あなたの最初のパラグラフはまさに私がこの質問を見たときに思ったものです。私の2番目の考えは、@einpoklumが['boost :: lexical_cast'](http://www.boost.org/doc/libs/1_61_0/doc/html/boost_lexical_cast/examples.html#boost_lexical_cast.examples.strings_to_numbers_conversion) 。そして、委員会は頻繁にブーストからものを適応させるので、質問のコメントで議論されたように、彼らがこれを考慮したかどうか評価するときに使用する非常に良い検索用語があります。 –

関連する問題