C++ is arguably the most versatile language in common use. C++ allows for both high-performance code as well as expressive abstractions and design constructs. The language is not perfect but it does represent an excellent compromise between these potentially conflicting language capabilities. C++ combines "low-level" programming tailored to specific machine architectures with "high-level" programming, which can allow code to be completely abstracted from any particulars of the machine executing the program.
History and standardization
Bjarne Stroustrup, a Computer Scientist from Bell Labs, was the designer and original implementer of C++ (originally named "C with Classes") during the 1980s as an enhancement to the C programming language. Enhancements started with the addition object-oriented concepts like classes, followed by, among many features, virtual functions, operator overloading, multiple inheritance, templates, and exception handling. These and other features are covered in detail in this book.
The C++ programming language is a standard recognized by the ANSI (The American National Standards Institute), BSI (The British Standards Institute), DIN (The German national standards organization), and several other national standards bodies, and was ratified in 1998 by the ISO (The International Standards Organization) as ISO/IEC 14882:1998, consists of two parts: the Core Language and the Standard Library; the latter includes the Standard Template Library and the Standard C Library (ANSI C 89).
Choosing and IDE to write the code
Get an IDE (Integrated Development Environment), generally consisting of a GUI (graphic user interface), a compiler (transforms C/C++ code into a machine readable program) and a text editor. Most C++ IDEs use the GNU C++ compiler which is part of the GNU Compiler Collection (GCC). This is a program from the Free Software Foundation. It is distributed under the GNU General Public License (GPL). For detailed information check http://gcc.gnu.org.Some might say that it is important to learn to edit code using an editor, and compile it manually. There is time for that later; the manual editing process changes depending on system and compiler, so put it off until you can write significant programs.
Recommendations for an IDE are Microsoft Visual Studio Express C++ (freeware, Windows; step-into debugging,) Xcode (closed-source, Macintosh OS X, step-into debugging,) Eclipse, or Code::Blocks IDE with Mingw (open source, cross-platform; no step-into debugging.) Dev-C++ is often mentioned, but it doesn't seem to have seen active development in years, and can be very inconvenient to use. You can download a fully functional version of Dev-C++ free of charge from the developers website http://www.bloodshed.net/download.html. Another good IDE in Code::Blocks http://www.codeblocks.org, Dev-C++ is old and has been discontinued by its creator.
A fairly recent addition to this list is the Open Watcom C++ compiler and environment, which is available for several operating systems. Most of the compilers/IDEs listed here are native to the Microsoft Windows Operating System. C/C++ was born on UNIX, and there are several free UNIX operating systems such as FreeBSD. C/C++ comes with most GNU/Linux variants. Any of the above listed operating systems, and compilers/IDEs are sufficient to learn to program C/C++.
Strings in c++
In the C++ programming language, the std::string class is a standard representation for a string of text. This class alleviates many of the problems introduced by C-style strings by putting the onus of memory ownership on the string class rather than on the programmer. The class provides some typical string operations like comparison, concatenation, find and replace, and a function for obtaining substrings. It can be constructed from a C-style string, and a C-style string can also be obtained from it.