Strings

Klassische Strings (Strings als Char-Arrays)

Informationen zu den klassischen C-Strings

Strings mit der Klasse strings

Informationen zur Klasse Strings

// Name:   Strings1.cpp
// Inhalt: Arbeiten mit der Klasse Strings
// ---------------------------------------------------------------------
#include <iostream>
#include <string>
using namespace std;
 
int main()
{int len,pos;
 string s1="123";     // String s1 wird über die Klasse string definiert
 char s2[20]="456";   // String s2 wird als Array von char definiert
 cout << s1 << s2 << endl;
 len = s1.length();   // liefert 3, die Laenge des Strings
 cout << len << endl;
 s1.insert(2, "xy");  // s ist nun "12xy3"
 cout << s1 << endl;
 s1.erase(2,2);       // s ist nun "123"
 cout << s1 << endl;
 pos = s1.find("23"); // liefert die Position 1
 cout << pos << endl;
 
 fflush(stdin); getchar(); // nur wegen Windowsumgebung 
 return 0;
}

AnsiStrings

AnsiStrings sind eine spezielle Stringklasse die unter Turbo C++ verwendet wird.

Viele Eigenschaften der Komponenten in der VCL speichern Strings, wie z. B. die Eigenschaften Text, Caption und Name. Diese Zeichenketten werden allerdings nicht im C-typischen Format mit abschließender Null, sondern in dem String-Format von Object Pascal gespeichert. In C++ wurde dazu die Klasse Ansistring erzeugt, die diese Zeichenketten speichert. Statt Ansistring kann auch kurz String verwendet werden.

Die Klasse Ansistring besitzt einige Vorteile gegenüber den üblichen C-Strings. So wird in der Klasse immer überprüft, dass nie auf ungültige Speicherbereiche zugegriffen wird, und es stehen verschiedene Methoden zur Arbeit mit den gespeicherten Zeichenketten zur Verfügung (Konvertierung nach int, in Klein-/Großbuch-staben…). Grundsätzlich hat die Klasse Ansistring zwei Nachteile gegenüber den C-Zeichenketten.

Beispiel für die Anwendung von AnsiStrings

Ansistring S;          // eine Instanz S wird erzeugt
S = 100;               // für die Zahl 100 wird der Konstruktor der Klasse Ansistring
                       // aufgerufen, der eine Zahl als Argument entgegennimmt 
int i = S.ToInt();     // ein Ansistring wird in eine Zahl konvertiert 
ShowMessage(12.345);   // Konstruktor für double wird aufgerufen

Die Klasse AnsiString bietet verschiedene Konstruktoren, die teilweise automatisch aufgerufen werden, z.B. wenn einem AnsiString eine Zahl zugewiesen wird wie im obigen Beispiel. Den Konstruktoren können beispielsweise int-, double-, char*-, AnsiString- und char-Werte übergeben werden. Ein Konstruktoraufruf ohne Parameter erzeugt einen AnsiString der Länge 0.

In der Klasse Ansistring wurden zahlreiche Operatoren überladen, wie z. B. +, ==, =, > und <. So ist eine einfache Anwendung von AnsiStrings möglich.

Nützliche Methoden der Klasse AnsiString

MethodeBeschreibungBeispiel
c_strKonvertiert einen AnsiString in einen C-String (char*). Dies wird häufig in Funktionen des Windows-API benötigt,
da diese Funktionen keine AnsiStrings verwenden können.
char cStr [100];
String S = „TEST“;
strcpy(cStr,S.c_str());
IsEmptyTestet, ob der String leer istif (S.Empty())
LengthLiefert die Länge zurückint Len = S.Length();
LowerCaseWandelt einen AnsiString in Kleinbuchstaben umString S2 = S.LowerCase();
ToDoubleKonvertiert einen AnsiString in einen double-Wertdouble d = S.ToDouble();
ToIntKonvertiert einen AnsiString in einen int-Wertint i = S.ToInt();
UpperCaseWandelt einen AnsiString in Großbuchstaben umString S2 = S.UpperCase();
CurrToStr
DateToStr
Konvertierungsfunktionen von Währungen oder Datum nach AnsiStringString S = DateToStr(Date());

Wenn Sie Funktionen entwickeln, die AnsiStrings als Parameter erwarten, verwenden Sie für die Parameterübergabe Referenzen oder Zeiger. Ansonsten wird bei jedem Aufruf der Funktion der Kopierkonstruktor aufgerufen, was einen zusätzlichen Aufwand bewirkt.


Wichtige Funktionen

Teilstring ermitteln

AnsiString MidStr (AnsiString AText, int AStart, int ACount);

Beschreibung:

Position eines Teilstrings ermitteln

int PosEx (AnsiString SubStr, AnsiString S, int Offset);

Beschreibung:




Beispiel: Projekt Ansistring.bpr

Das folgende Programm zeigt den Einsatz einiger Methoden der Klasse AnsiString:

KomponenteEigenschaftWert
• FormularNamefrmMain
CaptionAnsiStrings
• ButtonNamebtnStart
CaptionStart
• EditNameedtlnt
Text[leer]
• EditNameedtNura
Text[leer]