• 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

Object Storage Arubacloud
0 głosów
1,035 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,000 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,000 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,000 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,000 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,000 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,000 p.)
Poczytaj o wyrażeniach regularnych

Podobne pytania

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

92,666 zapytań

141,564 odpowiedzi

320,020 komentarzy

62,032 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.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...