提搞工作效率的最好C++开源库

jopen 9年前

1- Boost


Boost provides free peer-reviewed portable C++ source libraries.

They emphasize libraries that work well with the C++ Standard Library. Boost libraries are intended to be widely useful, and usable across a broad spectrum of applications. The Boost license encourages both commercial and non-commercial use.We aim to establish "existing practice" and provide reference implementations so that Boost libraries are suitable for eventual standardization. Ten Boost libraries are included in the C++ Standards Committee's Library Technical Report (TR1) and in the new C++11 Standard. C++11 also includes several more Boost libraries in addition to those from TR1. More Boost libraries are proposed for standardization in C++17.

Since 2006 an intimate week long annual conference related to Boost called C++ Now has been held in Aspen, Colorado each May. Boost has been a participant in the annual Google Summer of Code since 2007.
</div>



2- FastFormat:

  • Very high robustness, including 100% type-safety. It is more robust than: C's Streams, C++'s IOStreams,Boost.Format and Loki.SafeFormat. Indeed, with the FastFormat.Write API it is impossible to write defective client code!
  • Very high efficiency. It is faster than: C++'s IOStreams (by ~100-900%), Boost.Format (by ~400-1600%) and Loki.SafeFormat (by ~35-450%). Verify the performance claims for yourself: just type "make test.performance"!
  • Infinite extensibility. You can extend it to work with any argument type, any output/destination type, and with any format type
  • I18N/L10N capabilities. The FastFormat.Format API is a replacement-based API (like the printf()-family, Boost.Format and Loki.SafeFormat), and supports the runtime specification of format strings which facilitates L10N
  • Simple syntax. There are no overloaded operators, no weird insertion operators/operations, and no need to prep your arguments. Just write simple, clear, transparent code, without sacrificing expressiveness for flexibility.
  • Atomic operation. It doesn't write out statement elements one at a time, like the IOStreams, so has no atomicity issues
  • Thread safety. Each statement operates independently from all others, and it works successfully in single and/or multithreaded scenarios
  • Highly portable. It will work with all good modern C++ compilers; it even works with Visual C++ 6!


3- LOKI:



Loki is the name of a C++ software library written by Andrei Alexandrescu as part of his book Modern C++ Design.

The library makes extensive use of C++ template metaprogramming and implements several commonly used tools: typelist, functor, singleton, smart pointer, object factory, visitor and multimethods.

Originally the library was only compatible with two of the most standard conforming C++ compilers (CodeWarrior and Comeau C/C++): later efforts have made it usable with a wide array of compilers (including older Visual C++ 6.0, Borland C++ Builder 6.0, and GCC). Compiler vendors used Loki as a compatibility benchmark, further increasing the number of compliant compilers.

Maintenance and further development of Loki has been continued through an open-source community led by Peter Kümmel and Richard Sposato as a SourceForge project. Ongoing contributions by many people have improved the overall robustness and functionality of the library. Loki is not tied to the book anymore as it already has a lot of new components (e.g. - StrongPtr, Printf, and Scopeguard). Loki inspired similar tools and functionality now also present in the Boost library collection.


4- Pantheios: </h4>

Pantheios is an Open Source C/C++ Diagnostic Logging API library, offering an optimal combination of 100% type-safety, efficiency, genericity and extensibility. It is simple to use and extend, highly-portable (platform and compiler-independent) and, best of all, it upholds the C tradition of you only pay for what you use. 

Pantheios supports diagnostic logging of message statements of arbitrary complexity, consisting of heterogenous types.

Pantheios supports filtering of log messages based on severity level including (but not limited to) the eight levels defined by the SysLog protocol.

Pantheios supports back-end output, individually and in combination, to file, stderr/stdout, SysLog (including a custom implementation of the SysLog protocol for Windows), Windows debugger, Windows event log, COM Error Object, speech, or any custom back-end extension you care to write. Importantly, Pantheios is readily extended to use the existing transport mechanisms of feature-rich diagnostic logging libraries such as ACE, log4cpp, log4cplus, log4cxx. 

Pantheios does not contain any compiler-specific or platform-specific constructs. It supports UNIX (including Linux and Mac OS-X), and Windows, and should work with any operating system. It is known to be compatible with Borland (5.5.1+), Comeau (4.3.3+), Digital Mars (8.45+), GCC (3.2+), Intel (6+), Metrowerks (8+), Microsoft Visual C++ (5.0+), and should work with any reasonably modern C++ compiler.

 SourceForge.net Logo Pantheios is completely free and includes source released under a BSD-style licence. It is available for download from SourceForge.net
</div>

5- POCO:


Modern, powerful open source C++ class libraries and frameworks for building network- and internet-based applications that run on desktop, server, mobile and embedded systems.

The POCO C++ Libraries were created by Günter Obiltschnig in 2004 and have since been extended by enthusiastic C++ developers from all over the world. Funding is provided by Applied Informatics and sponsors.

Companies like 454 Life Sciences, HP, Lumiplan, Riverbed, Schneider Electric, Thales and Voltwerk Electronics; open source projects like GLUEscript, MITK, openFrameworks, Open Game Engine and Ogre.

6- STLSoft:  


</div>

STLSoft is a suite of libraries that provide:
STL extensions.
Facades over operating-system and technology-specific APIs.
The overarching characteristic of STLSoft is that it is lightweight. That sounds rather super, but what does it actually mean? Specifically, the STLSoft libraries
</div> </span> </div>