Boost-kirjasto
Mureakuha
Boost on kokoelma kirjastoja, joiden tarkoituksena on laajentaa C++-kieltä. Boost sisältää useita hyödyllisiä kirjastoja, joista osa tulee sisältymään seuraavaan C++:n standardiin, C++0x:ään.
Kirjastot on julkaistu Boost Software Licensen alaisena, joka sallii niiden käytön kaupallisissa sekä ei-kaupallisissa ohjelmissa hyvin vapaasti.
Sisällysluettelo |
Asentaminen
Jos käytössäsi on apt-get, niin asenna libboost-dev.
Lähdekoodit ovat saatavilla SourceForgesta.
Kirjastot
Format
Erittäin kätevä luokka, joka toimii kuten printf, mutta on tyyppiturvallinen (type safe).
Esimerkki yksinkertaisesta käytöstä:
#include <iostream> #include <boost/format.hpp> int main() { std::cout << boost::format("%1%.%2%.%3% %4%:%5%\n") % '5' % 6 % "05" % 18 % "00"; // tulostaa "5.6.05 18:00" return 0; }
Smart_ptr
Scoped_ptr
Scoped_ptr on vastine C++:n standardikirjaston auto_ptr:lle. Scoped_ptr vapauttaa dynaamisesti varatun muistin kun päästään lohkon loppuun. Tämä on hyödyllistä esimerkiksi kun on varattu muistia ja funktio heittää poikkeuksen. Tällöin ei itse tarvitse huolehtia muistin vapauttamisesta poikkeustilanteissa.
#include <iostream> #include <boost/scoped_ptr.hpp> struct MyStruct { int x; ~MyStruct() { std::cout << "x=" << x << std::endl; } }; int main() { { // varataan muistia dynaamisesti boost::scoped_ptr<MyStruct> ms(new MyStruct); ms->x = 0; ++ms->x; ++ms->x; } // kun lohko päättyy niin muisti vapautetaan std::cout << "loppu" << std::endl; return 0; } /* tulostaa: x=2 loppu */
Shared_ptr
Tokenizer
Tarjoaa funktiot merkkijonojen pilkkomista osiin erotinmerkkien kohdalta.
#include <iostream> #include <boost/tokenizer.hpp> #include <string> int main() { std::string str = "|1|2|||3|4|5|6|"; typedef boost::tokenizer< boost::char_separator<char> > tokenizer; boost::char_separator<char> sep("|"); tokenizer tokens(str, sep); std::ostream_iterator<std::string> out(std::cout, "\n"); std::copy(tokens.begin(), tokens.end(), out); return 0; } /* tulostaa: 1 2 3 4 5 6 */
