Narzędzia użytkownika

Narzędzia witryny


format

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Previous revision
Next revision
Previous revision
format [2008/04/16 23:07]
piechot
format [2008/04/16 23:50] (aktualna)
piechot
Linia 1: Linia 1:
 ====== Biblioteka Boost Format ====== ====== Biblioteka Boost Format ======
 + --- //​[[tpiechot@stud.elka.pw.edu.pl|Tomasz Piechota G1ISI]] 2008/04/16 23:44//
 +
 Biblioteka Boost Format dostarcza klasę do formatowania argumentów zgodnie z dostarczonym łańcuchem formatującym. Podstawowe różnice w stosunku do funkcji printf, to m.in.: Biblioteka Boost Format dostarcza klasę do formatowania argumentów zgodnie z dostarczonym łańcuchem formatującym. Podstawowe różnice w stosunku do funkcji printf, to m.in.:
   * deterministyczne zachowanie, nawet w przypadku podania błędnych argumentów (generuje wyjątek lub ignoruje błąd, w zależności od ustawień).   * deterministyczne zachowanie, nawet w przypadku podania błędnych argumentów (generuje wyjątek lub ignoruje błąd, w zależności od ustawień).
Linia 217: Linia 219:
  
  
-===== Ciekawe przykłady użycia ===== 
  
-Poniżej prezentuję kilka ciekawszych przykładów użycia ​klasy ''​boost::​format'':​+ 
 + 
 + 
 +===== Przykład użycia ​===== 
 +Poniższy program wyświetla listę produktów w postaci sformatowanej tabeli 
 <code cpp> <code cpp>
-// wyświetlanie tabel tekstowych na podstawie listy obiektów+#include <​iostream>​ 
 +#include <boost/format.hpp>​ 
 +#include <​string>​ 
 +#include <​list>​
  
-boost::​format line("​%|53T-|"​)+using namespace std
-boost::format data("​| %1% %|21t|| %2% %|42t|| %3% %|53t||"​);+using namespace ​boost;
  
-std::cout << line << std::endl+class Produkt 
-std::cout << data % "​Imie"​ % "​Nazwisko"​ % "​123123123"​ << std::endl+
-std::cout << line << std::endl;+public: 
 +    Produkt(string n, int i, float c, float z) nazwa(n), ilosc(i), cena(c), zmiana(z) { } 
 +    string nazwa
 +    int ilosc
 +    float cena; 
 +    float zmiana; 
 +};
  
-</code>+int main(int argc, char *argv[]) 
 +
 +    ​// Lista obiektów 
 +    list<​Produktp; 
 +    p.push_back(Produkt("​Widelec",​ 4, 4.99f, 1.021f)); 
 +    p.push_back(Produkt("​Łopatka",​ 32, 2.99f, -10.2292f));​ 
 +    p.push_back(Produkt("​Packa",​ 19, 19.39f, 19.1133f));
  
- --- //[[tpiechot@stud.elka.pw.edu.pl|Tomasz Piechota]] 2008/04/16 00:38//+ 
 +    // pozioma linia 
 +    format line("​%|55T-|"​);​ 
 + 
 +    // nazwa: ​ %|1$-.20s| wyrownanie do lewej, maksimum 20 znakow 
 +    // ilość: ​ %2% bez dodatkowego formatowania 
 +    ​// cena:   %|3$.2f| - liczba zmiennoprzecinkowa,​ do dwóch miejsc po przecinku 
 +    // zmiana: %|4$+10.4f| - wymuszenie wyświetlania znaku +, szerokosc 10, do 4 miejsc po przecinku, wyrównanie do prawej 
 +    format row("​|%|1$-20.20s|%|21t||%2%%|32t||%|3$.2f|%|43t||%|4$+10.4f|%|54t||"​);​ 
 + 
 +    cout << line << endl; 
 +    cout << row % "Nazwa produktu"​ % "​Ilosc"​ % "​Cena"​ % "​Zmiana (%)" << endl; 
 +    cout << line << endl; 
 +     
 +    for (list<​Produkt>​::​const_iterator it = p.begin(); it != p.end(); it++) 
 +        cout << row % it->​nazwa % it->​ilosc % it->cena % it->​zmiana << endl; 
 +     
 +    cout << line << endl; 
 +     
 +    return 0; 
 +
 + 
 +</code>
format.1208380076.txt.gz · ostatnio zmienione: 2008/04/16 23:07 przez piechot