• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak zamienić string na long double

Aruba Cloud - Virtual Private Server VPS
0 głosów
1,326 wizyt
pytanie zadane 26 lipca 2019 w C i C++ przez Jacob7 Użytkownik (540 p.)
Cześć. Potrzebuję małej pomocy. Chodzi mi o instrukcje/funkcje do zamienienia pobranych danych typu long double na dane typu string. I z powrotem ze string na long double.

Nie mogę nigdzie znaleźć jak to zrobić.

3 odpowiedzi

+4 głosów
odpowiedź 26 lipca 2019 przez tkz Nałogowiec (42,020 p.)
komentarz 26 lipca 2019 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Chyba raczej chodzi o ten link: https://en.cppreference.com/w/cpp/string/basic_string/stof

Mowa o liczbach zmiennoprzecinkowych. wink

komentarz 26 lipca 2019 przez tkz Nałogowiec (42,020 p.)
Tak, masz racje, doczytałem tylko do "typu long", a double już pominąłem, sam nawet nie wiem czemu, ale fakt, Twój link jest bardziej pomocny.
komentarz 26 lipca 2019 przez Eryk Andrzejewski Mędrzec (164,260 p.)

W porządku, każdy się może pomylić. wink

W każdym razie, napisałem to po to, bo jeżeli ktoś nie zauważy że funkcja std::stol() zwraca long inta, a nie long double, to może mieć problem. cheeky

0 głosów
odpowiedź 26 lipca 2019 przez Jacob7 Użytkownik (540 p.)
edycja 29 lipca 2019 przez Jacob7

Dziękuję bardzo za pomoc. Jesteście super smiley.

Pojawiła mi się dziwna zagwozdka. Nie wiem czemu w takim razie dziwnie wyświetla się instrukcja .length() oraz nawet liczba2. Może macie jakieś wskazówki, bo wygląda to na prosty kod, nie wiem...

#include <iostream>
#include <string>
using namespace std;
int main()
{
long double liczba;
string liczba2;
cin>>liczba; /*Wpisuje 1234567 */
liczba2=to_string(liczba);
cout << liczba2; /*Wyświetla sie 1234567.00000014 zamiast 1234567 */
cout << liczba2[4]; /*Wyświetla się prawidłowo 5 */
cout << liczba2.length(); /*Wyświetla się 14 zamiast 7*/

return 0;
}

 

komentarz 26 lipca 2019 przez tkz Nałogowiec (42,020 p.)
edycja 26 lipca 2019 przez tkz
Masz błąd w ostatniej linijce, long double nie ma "długości". Wracając do sedna pytania, dlaczego jest ten syf, taka natura zmiennoprzecinkowych liczb, ustaw precyzję na 2.
komentarz 29 lipca 2019 przez Jacob7 Użytkownik (540 p.)
Rzeczywiście, miało być w ostatniej linijce liczba2.length(), już poprawiłem

cout << liczba2.length(); /*Wyświetla się 14 zamiast 7*/
komentarz 29 lipca 2019 przez tkz Nałogowiec (42,020 p.)

http://cpp.sh/8terc

int 1234567

string 1234567.000000

długość stringa 14 

Dlaczego miało by być 7?

komentarz 29 lipca 2019 przez Jacob7 Użytkownik (540 p.)

Faktycznie, te zera po przecinku się niepotrzebnie dopisują, ale operacja jest logiczna. Dzięki za pomoc.

Znalazłem jeszcze fajne przejście z string na long double, dzięki "stold", myślę że działa.

string napis;
getline(cin, napis); /*123*/
long double x = stold(napis);
cout << x; /*Pokazuje 123*/

 

komentarz 29 lipca 2019 przez tkz Nałogowiec (42,020 p.)
Mój błąd był pierwszym poście, jak rzucisz okiem wyżej to się wyjaśni.
komentarz 2 sierpnia 2019 przez Jacob7 Użytkownik (540 p.)
Rzeczywiście. Już praktycznie wszystko skończone, działa dobrze. Zastanawiam się jeszcze tylko jakby sprawdzić, czy w liczbie jest więcej niż jedna kropka.

Może jakby dać pętlę "for" dla stringa która przejdzie przez każdą szufladkę i niech sobie dodaje w jakiejs zmiennej ile razy była "." i jak jest 2 albo więcej to znów trzeba podać liczbę.
komentarz 2 sierpnia 2019 przez tkz Nałogowiec (42,020 p.)
Poczytaj o wyrażeniach regularnych

Podobne pytania

0 głosów
1 odpowiedź 355 wizyt
0 głosów
1 odpowiedź 409 wizyt
pytanie zadane 15 grudnia 2022 w C i C++ przez piotr_domanski Bywalec (2,450 p.)
0 głosów
1 odpowiedź 2,244 wizyt
pytanie zadane 18 grudnia 2016 w C i C++ przez Jan Dobrakowski Użytkownik (580 p.)

93,327 zapytań

142,323 odpowiedzi

322,397 komentarzy

62,658 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...