Tak czy owak, prawie wszystkie aplikacje przetwarzają napisy. Visual C++ zawiera klasę obsługi napisów ANSI. Jest to niezwykle bogata klasa napisowa, która może zrobić z napisami, co tylko dusza zapragnie. W tym rozdziale przedstawiliśmy klasę napisów lżejszej wagi — mniejszą i zawierającą mniej funkcji. Zapewnia ona podstawowe działania: kopiowanie, porównywanie i dołączanie. Nie wykonuje żadnych wymyślnych operacji i nie obsługuje formatu Unicode.
Mimo że podany kod nie ilustruje żadnych skomplikowanych algorytmów, to stanowi źródło wielu wskazówek opisanych w części I. Zawiera też wiele przykładów przeciążania operatorów.
Na przykład ten fragment przeciąża operator +=, dzięki czemu może on obsługiwać dołączanie napisów. Zwróćmy uwagę na to, że są tam dwie wersje operatora. Jedna działa na klasie String, a druga na zmiennych char *. Gdy piszemy własne wersje operatorów, upewnijmy się, że przeciążamy je dla wszystkich typów argumentów, na których mogą działać te operatory.
const String& operator+=(const String& string)
{
Append(string.m_pch, string.m_cch); return *this;
}
const String& operator+=(const char *sz)
{
Append(sz, strlen(sz)); return *this;
}
Dalej wydrukowano plik kodu przykładowej klasy napisów. String.cpp jest plikiem kodu w C++. Liczby w komentarzach oznaczają numery wskazówek z części I. Pliki te i odpowiadający im plik projektu Visual C++ można znaleźć w folderze String na CD--ROM-ie dołączonym do książki.
String.cpp
#include <stdio.h>
#include <memory.h>
#indude <string.h>
#indude <iostream.h>