2016-08-26 62 views
2

爲什麼沒有爲什麼沒有std :: from_string()?

template <typename T> 
T std::from_string(const std::string& s); 
在C++標準

? (看看如何有std::to_string()函數,我的意思是)

PS - 如果你有一個想法,因爲這不被採用/考慮,只是回答/評論,並說出它是什麼,而不是downvoting。我實際上並沒有提出將此列入標準的提案。

+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

你的第一段就是我看到這個問題時的想法,除了基於觀點的/廣泛的... ...所以+1。我的第二個想法是@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) 。而且由於委員會經常從Boost中進行調整,所以在評估他們是否考慮過這個問題時,有一個非常好的搜索術語,正如在問題的評論中所指出的那樣。 –

相關問題