Dzisiaj wypróbowałem kilka nowych funkcji C++ 11 STL i napotkałem std::to_string
.C++ 11 std :: to_string (podwójne) - Bez końcowych zer
Piękny, piękny zestaw funkcji. Tworzenie obiektu stringstream na tylko jeden pokój na ciąg znaków nawrócenia zawsze wydawało mi się przesadą, więc cieszę się, że możemy teraz zrobić coś takiego:
std::cout << std::to_string(0.33) << std::endl;
wynik?
0.330000
Nie jestem do końca zadowolony z tego. Czy istnieje sposób, aby powiedzieć std::to_string
, aby pominąć końcowe zera? Przeszukałem internet, ale z tego, co widzę, funkcja przyjmuje tylko jeden argument (wartość do przeliczenia). Wracając do dawnych czasów za pomocą stringów, możesz ustawić szerokość strumienia, ale wolałbym nie konwertować z powrotem.
Ktoś napotkał ten problem przed/ma rozwiązanie? Niektóre wyszukiwania StackOverflow nie przyniosły niczego.
(C++ 11 odniesienie STL: http://en.cppreference.com/w/cpp/string/basic_string/to_string)
@chris: nie po wywołaniu 'std :: to_string'. Zwraca łańcuch, a nie liczbę, a jego formatowanie wydaje się trudne do modyfikacji. – rubenvb
@rubenvb, Strzelaj, nie myślę poprawnie, czy ja ... – chris
"Piękny, piękny zestaw funkcji. Tworzenie obiektu stringstream dla jednej podwójnej konwersji zawsze wydawało mi się przesadzone". A potem widzisz, dlaczego tak naprawdę nie jest to przesada - to strumienie, które zawierają całą infrastrukturę do określania formatu. Aby uzyskać to, czego chcesz, 'to_string' musiałoby duplikować wszystko w równoważnym API. To może nie jest okropny pomysł, ale nie jest to pomysł, z którym komisja się zgadza. Powód 'to_string' jest piękny: nie ma opcji ;-) –