Boost

C++ e CGI: parsing della stringa di query

Lo standard CGI prevede la variabile d’ambiente QUERY_STRING che contiene il valore della query richiesta dal client.
Se il client richiede la pagina:


http://localhost/split.cgi?nome=Antonio&eta=21&nazione=Italia

la stringa di query è nome=Antonio&eta=21&nazione=Italia.
Notiamo come questa stringa sia un insieme di elementi <chiave, valore>.

Continua >

C++: conversione di un numero in stringa e viceversa con le Boost

La libreria Boost offre, nell’header lexical_cast.hpp, la funzione generica lexical_cast, che consente di convertire un numero in una stringa e viceversa:

namespace boost
{
    class bad_lexical_cast;
    template<typename Target, typename Source>
      Target lexical_cast(const Source& arg);
}

Continua >

C++ e Boost: wrapper degli array ordinari

La libreria Boost fornisce una classe-involucro per gli array ordinari. Tale classe risulta essere utile quando si vuole rendere più semplice la gestione degli array classici e quando si vuole evitare l’overhead generato dalla classe std::vector della STL, che rappresenta un array dinamico (e non a dimensione fissa, come gli array ordinari).

Continua >

C++ e Boost: il costrutto foreach

La libreria Boost definisce una macro, BOOST_FOREACH che consente di ottenere lo stesso risultato che si otterrebbe con il costrutto foreach di altri linguaggi (C#, Perl, Java utilizzando la variante del for…).

Continua >

C++ e Boost: split di una stringa

Lo split di una stringa utilizzando la libreria Boost è estremamente semplice.
Utilizzeremo per il nostro scopo gil header boost/algorithm/string/split.hpp, per utilizzare la funzione split, e l’header boost/algorithm/string/classification.hpp per utilizzare gli algoritmi di classificazione.

Continua >

C++ e Boost: la classe any

boost::any è una classe della libreria Boost utilizzata come contenitore generico.
Un oggetto any può contenere il valore di un qualsiasi tipo, senza effettuare alcun tipo di conversione.

La classe è definita così:

// In header: <boost/any.hpp>

class any {
public:
  // construct/copy/destruct
  any();
  any(const any &);
  template<typename ValueType> any(const ValueType &);
  any & operator=(const any &);
  template<typename ValueType> any & operator=(const ValueType &);
  ~any();

  // modifiers
  any & swap(any &);

  // queries
  bool empty() const;
  const std::type_info & type() const;
};

Continua >