tags:

views:

513

answers:

8

I have heard of Boost and ACE as two of the well known C++ libraries. What are the other good C/C++ libraries available?

Does Boost and ACE support session management for web applications written in C/C++?

EDIT: Ok I will try to be domain specific. I am looking for a C/C++ library which could help me maintain session state for a C++ based CGI web application.

+5  A: 

Depends if you are talking about general purpose or domain specific libraries. For general purpose Boost is best of breed (and don't forget about the good old STL), so I don't see the point of looking for something else that will cover much of the same ground, but is not as polished. As for domain specific you'd have to specify the domain :-)

David Reis
+1  A: 

C++ has libraries for anything you could imagine, so the scope of your question is rather undefined. What interests you? Web applications, scientific programs, GUIs? Specify what you need exactly if you want a good answer.

Boost is a general-purpose library for relatively low-level things. It's rather complex and advanced though, so you should have a good grasp of C++ before you start with it. ACE is mainly for synchronization and communication between threads/processes/applications.

If web applications is what you need, I recommend you to strongly consider the language you're picking. C++ may not be the best direction to go here, unless you have very specific constraints that force your hand.

Eli Bendersky
+1  A: 

There is also GTK which is good if you need to have a gui or use unicode. (although c++0x should have better unicode support natively when the standard is complete).

Boost doesn't yet support sessions, but a CGI library has been proposed which should have sessions.

If you want to use C++ for web applications, consider using CGICC

Charles Ma
+3  A: 

When you're trying to build a web application in C++ I'd recommend Wt, a Qt-like framework for creating web applications in C++. It handles sessions either in one process per session (when security matters) or multiple sessions per process. You can either use the built-in webserver or use it with any webserver that supports FastCGI.

(Also, I'd recommend it over Boost.CGI as it seems to be maintained and feature-complete).

tstenner
+2  A: 

If you're interested in C (not C++) as well, glib (the Gnome project's utility library) provides a number of useful data structures and constructs.

DGentry
+1  A: 

Poco is an excellent C++ Library with data access, xml, networking, compression and crypto all wrapped up in once nice little package.

Hippiehunter
+1  A: 

Boost evidently, QT for GUI (that's not clearly a library I know), Electronic Arts Standard Template Library and Blitz++ if you want to do scientific computation :

Blitz++ is a C++ class library for scientific computing which provides performance on par with Fortran 77/90.

The C++ programming language offers many features useful for tackling complex scientific computing problems: inheritance, polymorphism, generic programming, and operator overloading are some of the most important. Unfortunately, these advanced features came with a hefty performance pricetag: until recently, C++ lagged behind Fortran's performance by anywhere from 20% to a factor of ten. As a result, the adoption of C++ for scientific computing has been slow.

Is there a way to soup up C++ so that we can keep the advanced language features but ditch the poor performance? This is the goal of the Blitz++ project: to develop techniques which will enable C++ to rival -- and in some cases even exceed -- the speed of Fortran for numerical computing, while preserving an object-oriented interface. The Blitz++ Numerical Library is being constructed as a testbed for these techniques.

Recent benchmarks show C++ encroaching steadily on Fortran's high-performance monopoly, and for some benchmarks, C++ is even faster than Fortran! These results are being obtained not through better optimizing compilers, preprocessors, or language extensions, but through the use of template techniques. By using templates cleverly, optimizations such as loop fusion, unrolling, tiling, and algorithm specialization can be performed automatically at compile time.

Another goal of Blitz++ is to extend the conventional dense array model to incorporate new and useful features. Some examples of such extensions are flexible storage formats, tensor notation and index placeholders.

anno
+1  A: 

Ok I will try to be domain specific. I am looking for a C/C++ library which could help me maintain session state for a C++ based CGI web application.

CppCMS?

Artyom