C++ Miscellaneous

A simple, portable and lightweight generic library for handling UTF-8 encoded strings.
UTF-8 & Unicode FAQ for Unix/Linux - http://www.cl.cam.ac.uk/~mgk25/unicode.html

The C++ strcoll function compares two strings according to the LC_COLLATE category, which provides specific collating information. This function may fail if either string contains characters outside the domain of the current collating sequence. It is multi-thread safe as long no other thread calls setlocale() while this function is executing. The following steps will help you use the strcoll function in C++.

The iconv API is the standard programming interface for converting character stringsfrom one character encoding to another in Unix-like operating systems. Initially appearing on the HP-UX operating system, it was standardized within XPG4 and is part of the Single UNIX Specification (SUS).

All recent Linux distributions contain a free implementation of iconv() as part of the GNU C Librarywhich is the C library for current Linux systems. To use it, the GNU glibc localesneed to be installed, which is provided as a separate package, named glibc-locale usually, and is normally installed by default

Mbstowcs - Convert multibyte string to wide-character string
The C multibyte character string mbstris interpreted character by character and translated to its wchar_t equivalent, which is stored in the location pointed by wcstr. The length in characters of the resulting string, not including the ending null-character, is returned.

Wcstombs - Convert wide-character string to multibyte string
The C wchar_t string wcstris interpreted character by character and translated to its multibyte equivalent, which is stored in the location pointed by mbstr. The length in bytes of the resulting multibyte string, not including the ending null-character, is returned.

Mblen - Get length of multibyte character
The size of the multibyte character pointed by pmb is determined, examining at most max bytes.
mblen has its own internal shift state, which is altered as necessary only by calls to this function.

For many applications, C with GLib is an alternative to C++ with STL (see GObject for a detailed comparison).

In computing, GLibrefers to a cross-platform software utility library. It started life as part of the GTK+project, however, before releasing version 2 of GTK+, the project's developers decided to separate non-GUI-specific code from the GTK+ platform, thus creating GLib as a separate product. GLib was released as a separate library so other developers, those that did not make use of the GUI-related portions of GTK+, could make use of the non-GUI portions of the library without the overhead of depending on a full-blown GUI library.

Since GLib is a cross-platform library, applications using it to interface with the operating system are usually portable across different operating systems without major changes.

The International Component for Unicode (ICU) is a mature, portable set of C/C++ and Java libraries for Unicode support, software internationalization (I18N) and globalization (G11N), giving applications the same results on all platforms.

C++ Strings

The Complete Guide to C++ Strings, Part I - Win32 Character Encodings : http://www.codeproject.com/KB/string/cppstringguide1.aspx

The Complete Guide to C++ Strings, Part II - String Wrapper Classes : http://www.codeproject.com/KB/string/cppstringguide2.aspx?fid=11477&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr=126&select=308883

C++ Strings - http://richardbowles.tripod.com/cpp/cpp15.htm

Methods not inherited in C++

C++ inheritance is very similar to a parent-childrelationship. When a class is inherited all the functions and data member are inherited, although not all of them will be accessible by the member functions of the derived class. But there are some exceptions to it too. Some of the exceptions to be noted in C++ inheritance are as follows.

1. The constructor of a base class are not inherited
2. The destructor of a base class are not inherited
3. The assignment operator is not inherited
4. Friend functions and friend classes of the base class are also not inherited.

There are some points to be remembered about C++ inheritance. The protected and public variables or members of the base class are all accessible in the derived class. But a private member variable not accessible by a derived class.

Private Inheritance:
Private inheritance does not model an is-a relationship in the same way that public inheritance does. Instead, private inheritance refers to the idea of being "implemented in terms of a".

The key difference is that whereas public inheritence provides a common interface between two classes, private inheritance does not--rather, it makes all of the public functions of the parent class private in the child class. This means that they can be used in order to implement the child class without being accessible to the outside world.

The syntax for private inheritance is almost exactly the same as for public inheritance.
class obj : private implementationDetailOfObj.

Intel Software Labs - Intel Software & Blogs - http://software.intel.com/

Microsoft Coding Standard Rules -