Boost-kirjasto

Mureakuha

Loikkaa: valikkoon, hakuun

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
*/

Thread

Regex

Linkkejä

Henkilökohtaiset työkalut