C++ is typically criticized for its complexness and esoteric syntax, however i feel an even bigger barrier to effective development in C++ is lack of access to high-level libraries, just like the category libraries that come back intrinsical with .NET or Java. SO let’s starts the brief description on this topic Best C++ Libraries to Fill the Gaps in the Standard Library.
The C++ customary Library may be a useful gizmo, together with extremely optimized algorithms and containers that ar oftentimes required once writing any application, however you don’t see the networking libraries, XML libraries, crypto and lots of different facilities that you just expect to possess out-of-the-box with different high-level languages. Till C++11, there wasn’t even a threading library, in spite of the importance of creating smart use of the multiple cores on fashionable computers if you wish your application to scale.
This means that if you’re writing a considerable application in C++, you’ll in all probability need to be creating use of some third-party libraries.
This article appearance at the various purposeful areas you get with frameworks appreciate .NET and Java, and sees what libraries ar accessible for C++ developers to serve those functions.
Before breaking down into the various library classes, it’s value job out 2 libraries that span multiple practical areas:
BOOST: Boost is one of the best known and most used libraries in modern C++ development (after the standard library itself). It is, however, really a collection of many smaller libraries, and it doesn’t aim to be the kind of coherent framework that you see in Java or .NET.
POCO : POCO isn’t likewise called Boost, however is far nearer stylish and coherence to the category libraries for Java and .NET. It aims to supply high-level practicality within the same reasonably key areas as alternative problem-oriented language customary libraries do, whereas Boost libraries tend to be a touch additional low-level, with a touch additional work required by the user to use them effectively.
Libraries by Category
.NET equivalent: Windows Presentation Foundation (WPF), Windows Forms
Java equivalent: Swing, Abstract Windows Toolkit (AWT)
MFC: The Microsoft Foundation categories bring to a close the Windows and COM arthropod genus to permit for easier development of Windows desktop applications in C++. it’s well supported in Visual Studio, which has a visible forms editor. Royalty-free to use as well as for business use once your application is made with a fitly authorised copy of Visual Studio, subject to some restrictions. just for Windows of course!
Qt: The Qt application framework could be a cross-platform library for graphical user interface development, some general categories, associated additionally an IDE (which includes a visible forms editor). ASCII text file and business licenses area unit offered.
.NET equivalent: ASP.NET
Developing internet applications in C++ is pretty removed from the norm, however here area unit some choices that area unit available:
CppCMS: The CppCMS C++ internet development framework aims to form internet development in C++ convenient, and their website offers a explanation on why you may need to develop internet applications in C++.
.NET equivalent: System.Net namespace
Java equivalent: java.net package
Boost ASIO: The Boost Asynchronous I/O library, that is additionally obtainable in non-Boost kind as a header-only library, could be a cross platform library primarily for networking (TCP, UDP, ICMP and as well as IPv6 support), similarly as another I/O practicality as well as operating system domain sockets and a wrapper around Windows API handles.
POCO::Net: The POCO Networking categories give a higher-level networking library compared to spice up bird genus, and additionally to the bottom networking protocols that Boost bird genus supports there also are categories for DNS, HTTP, FTP and email, and support for SSL/TLS.
NET equivalent: System.Web namespace
gSOAP: The gSOAP toolkit may be a mature however still-maintained library that supports SOAP and REST XML net services.
Casablanca: The metropolis C++ REST SDK may be a newer (and less mature) creation by Microsoft to produce tools for accessing and authoring REST services to C++. In spite of the library’s origin, it supports Linux, raincoat OS X and a number of other phone platforms. Given the increase in importance of REST for cloud services, this SDK could also be one to observe.
.NET equivalent: System.Data namespace
Java equivalent: java.sql package
POCO::Data: The categories within the POCO information namespace area unit a detailed match to the design of the information frameworks in .NET and Java, with a database-independent abstraction layer that wraps up communication with multiple databases. POCO::Data contains constitutional support for MySQL, SQLite and ODBC.
OTL: The Oracle, ODBC Associate in Nursingd DB2-CLI example Library could also be of interest if you’re searching for an idiomatically C++ library, as this information abstraction may be a header-only library with Associate in Nursing STL-style interface.
.NET equivalent: System.Xml namespace
Java equivalent: java.xml.* packages, org.w3c.dom, org.xml.sax
POCO::XML: The POCO XML categories offer SAX2, DOM Associate in Nursingd an XML author. Parsing uses the Expat XML C library.
Xerces C++: The Xerces C++ library could be a giant XML framework. additionally to DOM and SAX2, it additionally supports XML Schema validation and with companion libraries designed on high of Xerces, there’s support for XML Stylesheet transformations and XPath 2/XQuery.
You may even be curious about one in all the quick, light-weight XML libraries for C++ of that there ar many as well as TinyXML and RapidXML. These don’t seem to be fully-featured XML libraries, however they’re straightforward to use and integrate with.
.NET equivalent: System.Runtime.Serialization.Json namespace
JsonCPP: The JsonCpp library may be a easy JSON reader/writer for C++.
JSON Spirit: The JSON Spirit library is another JSON reader/writer. it’s engineered mistreatment the Boost Spirit program generator, thus you may would like a dependency on Boost to use this.
Poco::JSON: POCO has this one lined too with its JSON namespace.