logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

C++ Jak poprawnie formatować liczby w klasie DecimalFormat?

idepopizze 05 Lip 2020 14:52 507 4
REKLAMA
  • #1 18800572
    idepopizze
    Poziom 33  
    Posty: 2467
    Pomógł: 82
    Ocena: 270
    Napisałem prostą klasę formatującą dane wysyłane do pliku.
    Staram się formatować liczby (int i double).

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    Mam z tym kilka problemów.
    - chciałbym żeby sformatowany int zawierał kropkę, w tym momencie nie bardzo mi to wychodzi
    - chciałbym zmieniać separtor dziesiętny (kropka lub przecinek do wyboru)
    tutaj rozwiązaniem pewnie jest locale, ale nie znalazłem działającego przykładu jedynie takie z użyciem printf
  • REKLAMA
  • #2 18801719
    lukagrom
    Poziom 16  
    Posty: 195
    Pomógł: 29
    Ocena: 12
    Do "inta z kropką", można na szybko użyć zwykłego sprintf, lub jeśli to nie jest kompilator gcc/g++ zapomnianej funkcji - itoa.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #3 18803152
    idepopizze
    Poziom 33  
    Posty: 2467
    Pomógł: 82
    Ocena: 270
    Używam kompilatora GCC 8.2.0 , używam też VisualStudio2019
    Sprawdziłem i itoa nie jest rozpoznawane.
    add_Symbol działa.
    Mam teraz dylemat, bo używam template testowa i zastanawiam się czy w jakiś sposób teraz wykrywać co jest przekazywane do template (ten int) czy zrezygnować z template i klasycznie przeciążać funkcje różnymi typami (tak jak to w tle robi template).

    Druga sprawa to ta kropka i przecinek.
    Mam taki drobny przykład z locate
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    dostaje taki wynik:
    Kod: Dos
    Zaloguj się, aby zobaczyć kod


    Jak widać przecinek i kropka działa z printf a z cout już niespecjalnie - dlaczego ?
  • REKLAMA
  • #5 18803513
    idepopizze
    Poziom 33  
    Posty: 2467
    Pomógł: 82
    Ocena: 270
    Do tych konkretnie informacji na stackoverflow jeszcze nie dotarłem. Dziękuję, poczytam.
    Wyczytałem natomiast, że jeżeli zacznę używać locale w kodzie i ten kod zostanie użyty na maszynie bez lokacji której użyłem to wpadnę w kłopoty.
    Dlatego może lepsze jest wkomponowanie tej kropki i przecinka w kod.
REKLAMA