Boost
C++ e CGI: parsing della stringa di query
14 apr
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>.
C++: conversione di un numero in stringa e viceversa con le Boost
6 apr
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); }
C++ e Boost: wrapper degli array ordinari
2 apr
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).
C++ e Boost: il costrutto foreach
1 apr
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…).
C++ e Boost: split di una stringa
10 mar
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.
C++ e Boost: la classe any
8 mar
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; };