REFERAT-MenüDeutschGeographieGeschichteChemieBiographienElektronik
 EnglischEpochenFranzösischBiologieInformatikItalienisch
 KunstLateinLiteraturMathematikMusikPhilosophie
 PhysikPolitikPsychologieRechtSonstigeSpanisch
 SportTechnikWirtschaftWirtschaftskunde  



Zeichenkette String



1. Definition

Eine Zeichenkette (String) ist eine Aufeinanderfolge von darstellbaren Zeichen, die sequentiell im Speicher angeordnet sind und gemeinsam angesprochen werden. Jedes einzelne Zeichen wird entweder durch ein Byte oder ein Wort codiert dargestellt. Strings haben immer eine aktuelle Länge, die den gerade gespeicherten Zeichen entsprechen und eine maximale Länge. Die interne Speicherung ist von Programmiersprache zu Programmiersprache verschieden.

2. Interne Speicherung der Zeichenketten

Visual Basic

In Visual Basic wird die Länge des Strings mitgespeichert. Die maximale Länge ist auf ca. 65000 Zeichen begrenzt
(16-Bit Version). Die Maximallänge muss nicht angegeben werden, da sich Visual Basic immer den benötigten Speicherplatz nimmt.



C/C++

In C/C++ wird eine Zeichenkette mit 0 abgeschlossen. Die Länge muss bei Bedarf immer wieder neu ermittelt werden, ist jedoch 'unbegrenzt'. Es gibt keinen eigenen Typ, daher werden Strings immer mittels eines Zeichenarrays (char-Array) verwirklicht.

In C++ gibt es innerhalb von Klassenbibliotheken (z.B. MFC) einen eigenen Typ für Strings, bei dem C++ den benötigten Speicherplatz an die Länge anpaßt.

JAVA

In JAVA gibt es einen eigenen Typ für Strings, bei dem JAVA den benötigten Speicherplatz an die Länge anpaßt.

Cobol

In Cobol ist eine Zeichenkette eine Aneinanderreihung von alphanumerischen Zeichen. Der Text wird immer linksbündig eingefügt, wobei die überstehenden Stellen abgeschnitten werden. Ist der String kleiner als die vereinbarte Anzahl, wird der Rest mit Blanks aufgefüllt.

3. Vereinbarung von Zeichenketten

Visual Basic

Es gibt zwei Möglichkeiten zur Vereinbarungen, nämlich explizit und implizit. Die Variable muss vor ihrer Verwendung nicht vereinbart werden. Um sie eindeutig als String auszuweisen, muss nach dem Namen ein $ angefügt werden (Text$ = 'HALLO'), sonst ist die Variable vom Datentyp Variant. Um bei der Verwendung nicht $ schreiben zu müssen, kann man die Variable explizit vereinbaren (z.B. Dim oder Static).
Z.B.:

Dim Text As String

Auch hier kann bei der Vereinbarung eine fixe Länge angegeben werden, wobei der Rest mit Blanks aufgefüllt wird.
Z.B.:

Dim Text As String * 25 'String mit 25 Zeichen wird vereinbart

C/C++

In C/C++ muss immer eine Längenangabe angegeben werden, wobei diese um 1 zu erhöhen ist, um die abschließende 0 speichern zu können.
Z.B.:

char Text[26]; // String mit 25 Zeichen wird vereinbart (0!!)

In C++/MFC gibt es eigens für Zeichenketten, den Typ CString. Die Länge muss nicht angegeben werden.

CString Text;

JAVA

Es gibt jedoch eine um einiges einfachere Methode einen String anzulegen, ähnlich der in C++.
Z.B.:

String Text;

Auch in JAVA kann der String gleich bei der Vereinbarung initialisiert werden.

String s2 = 'Karl';

Cobol

In Cobol erfolgt die Vereinbarung in der Data Division.
Z.B.:

77 Text PIC X(25).

Der String kann auch gleich bei der Vereinbarung initialisiert werden.

77 Text PIC X(25) value 'Hallo'.

4. Belegung von Zeichenketten

Visual Basic

Bei einem String ohne fixer Länge braucht sich der Programmierer nicht um die Länge kümmern, da Visual Basic die Länge des Strings automatisch anpaßt.
Bei einem String mit fixer Länge werden die Zeichen abgeschnitten, falls der String länger als vereinbart ist.
Z.B.:

Text = 'Hallo'
Text = Text2

C/C++

In C/C++ können Zeichenketten nicht direkt in Zuweisungen verwendet werden, sondern nur mit sprintf strcpy und strncpy.
Z.B.:

sprintf(Text,'%s','Hallo'); // sprintf wird jedoch normalerweise nur zu Typenkonvertierung verwendet.
sprintf(Text,'%s',Text2);
strcpy(Text,'Hallo'); //
üblichere Methode zum kopieren eines Strings
strcpy(Text,Text2); //
Inhalt von Text2 nach Text

Bei strncpy werden nur ein n-Anzahl von Zeichen kopiert, die Funktion hängt zum Unterschied von strcpy nicht immer 0 an den String. Die 0 muss daher vom Programmierer selbst nach dem strncpy angehängt werden.
Z.B.:

strncpy(Text,Text2, 3); // 3 Zeichen von Text2 werden nach Text kopiert
Text[3] = '0'; //
am Ende des Textes wird die '0' angehängt

Der Programmierer muss selber darauf achten, dass der Zielstring genügend gross ist, da sonst der dahinterliegende Speicherplatz überschrieben wird.

In C++/MFC können Zeichenketten, die vom Typ CString sind, auch direkt in Zuweisungen verwendet werden.
Z.B.:

Text = 'Hallo';
Text = Text2;

JAVA

Bei einer Zeichenkette die mit dem Befehl String definiert wurde, braucht sich der Programmierer nicht um die Länge des String zu kümmern, da die Länge des Strings automatisch angepaßt wird.
Z.B.:

Text = 'Hallo';
Text = Text2;

Cobol

Hier erfolgt die Wertzuweisung mit dem Befehl move.
Z.B.:

move 'Hallo' to Text.
move Text2 to Text.

5. Ein-/Ausgabe von Zeichenketten

Visual Basic

Die Eingabe erfolgt mittels Steuerelement (Textfeld, Listbox, ), während die Ausgabe zusätzlich noch mit der Methode print erfolgen kann.
Z.B.:

Print Text

C/C++

In C erfolgt die Eingabe mittel gets und scanf. Bei gets wird bis zum Zeilenende gelesen, und es können keine Formatierungen vorgenommen werden, bei scanf schon. Bei einer Eingabe von Blanks und Tabulator speichert gets sie im String, scanf bricht bei dem ersten Blank oder Tabulator ab.
In C++ hat man zusätzlich noch die Funktion
cin, bei der auch beim ersten Whitespace Zeichen abgebrochen wird, und keine Formatierung vorgenommen werden können.
Z.B.:

gets (Text);
scanf ('%s',Text);
cin >> Text;

Die Ausgabe erfolgt mittels den Funktionen puts printf und in C++ zusätzlich noch mit cout. Während die Funktionen puts und cout keine Formatierung zulassen, kann man bei printf Formatierungen angeben.
Z.B.:

puts (Text);
printf ('%-20s',Text); //
Hier werden 20 Zeichen des Strings rechtsbündig ausgegeben
cout << Text;

JAVA

Die Eingabe erfolgt mittels Steuerelementen (Textfeld, Listbox, ) oder mittels
Z.B.:

System.in . // etwas kompliziert

während die Ausgabe zusätzlich noch mit der Methode drawString erfolgen kann.
Z.B.:

System.out.println(Text);

Cobol

Die Eingabe erfolgt mittels:

ACCEPT Text FROM TERMINAL.

Die Ausgabe erfolgt mittels:

DISPLAY Text UPON TERMINAL.

6. Vergleichen von Zeichenketten

Visual Basic

In Visual Basic ist ein direkter Vergleich möglich, die zugelassenen Operatoren sind: < <= >= > <>

C/C++

In C ist kein direkter Vergleich möglich, daher muss man eine der Funktionen strcmp stricmp oder strncmp nehmen. In C wird der ASCII-Code der einzelnen Zeichen verglichen.

Strcmp liefert 0 zurück falls die beiden Strings gleich sind, einen Wert kleiner 0 falls der erste Parameter kleiner als der zweite, und einen Wert größer 0 falls der erste Parameter größer als der zweite ist.
Z.B.:



strcmp ('Haus', 'haus'); // Ergebnis: -1, da der 1. Parameter kleiner als der 2. Ist

Stricmp vergleicht zwei Strings miteinander, wobei es die Groß- und Kleinschreibung ignoriert. Der Rückgabewert ist genauso wie bei strcmp.
Z.B.:

stricmp ('Haus', 'haus'); // Ergebnis: 0, da stricmp Groß- und Kleinschreibung nicht unterscheidet!

Strncmp vergleicht die ersten n-Zeichen von zwei Strings. Der Rückgabewert ist wieder gleich wie bei den beiden vorhergehenden.
Strncmp unterscheidet zwischen Groß- und Kleinschreibung!
Z.B.:

strncmp ('Jagd', 'Jagdhaus', 4); // Ergebnis: 0, da ersten 4 Zeichen gleich sind.

Wird in C++ eine Variable vom Typ CString vereinbart, ist auch hier ein direkter Vergleich möglich, die zugelassenen Operatoren sind: < <= >= >

JAVA

In JAVA ist, kein direkter Vergleich möglich, statt dessen gibt es die Methoden der String-Klasse, equals oder compareTo .
Z.B.:

Text.equals(Text2);  // liefert true wenn Text gleich Text2 ist
Text.compareTo(Text2);   // funktioniert wie strcmp in C

Cobol

In Cobol ist ebenso ein direkter Vergleich möglich, wobei in Cobol 74 die Vergleichswörter: not, greater, less, equal verwendet werden.
In Cobol 85 kommen noch die Vergleichswörter:
greater or equal, less or equal dazu.

7. Ermitteln der aktuellen Stringlänge

Visual Basic

In Visual Basic wird die aktuelle Stringlänge mit der Funktion Len ermittelt. Die Funktion liefert als Return-Wert einen Integer-Wert.
Z.B.:

Laenge = Len (Text)

C/C++

In C/C++ wird die aktuelle Stringlänge mit der Funktion strlen ermittelt. Die Funktion liefert als Return-Wert einen Integer-Wert.
Z.B.:

Laenge = strlen (Text);

JAVA

In JAVA wird die aktuelle Stringlänge mit der Methode length ermittelt. Die Funktion liefert als Return-Wert einen Integer-Wert.
Z.B.:

Laenge = Text.length();

Cobol

In Cobol hat der String immer die vereinbarte Länge, deshalb gibt es keine Funktion die die aktuelle Länge ermittelt.

8. Bearbeiten von Zeichenketten

8.1. Zeichenweiser Zugriff

Visual Basic

In Visual Basic kann man jedes Zeichen mit der Funktion Mid ansprechen.

Zeichen = Mid (text,Position,1)
Mid (text,Position,1) = 'a'

C/C++

In C kann man die einzelnen Zeichen über den Index von 0 bis Länge des Strings - 1 ansprechen.

JAVA

In JAVA kann man die einzelnen Zeichen über den Index von 0 bis Länge des Strings ansprechen.

Cobol

In Cobol erlauben nur einige Compiler den Zugriff auf einzelne Stringkomponenten, eine andere Alternative ist daher die Vereinbarung eines Strings als Tabelle:

01 Text.
05 Element PIC X OCCURS 20 TIMES.

8.2. Teilstring suchen (Im String Text wird nach Suchstring gesucht!)

Visual Basic

In Visual Basic gibt die Funktion Instr , welche die Position des ersten Zeichens des Suchkriteriums innerhalb von Text zurückliefert. Liefert die Funktion 0, wurde der Suchstring im Text nicht gefunden.

Position = Instr(Suchstring, Text)

C/C++

In C/C++ steht meistens die Funktion strstr zur Verfügung, die einen Zeiger auf den gefundenen Suchstring im String Text oder NULL bei nicht gefunden, zurückliefert.

Zeiger = strstr (Text,Suchstring);

JAVA

In JAVA gibt es keine Standardfunktion zum 'Suchen eines Teilstrings'.

Cobol

In Cobol gibt es keine Standardfunktion zum 'Suchen eines Teilstrings'.

8.3. Teilstring herauskopieren

Visual Basic

In Visual Basic gibt es Left$, Right$ und Mid$, wobei Left$ liefert die ersten Zeichen des String, Right$ liefert die letzten Zeichen des Strings und Mid$ liefert die Zeichen ab der Position vom String, die Zählung beginnt bei 1. Z.B.:

Text = '12345678'
Position = 4
Ziel = Mid$ (Text,Position,4)
// Ziel = 4567

C/C++

In C/C++ gibt es die Funktion strncpy, die einen Positionszeiger, nämlich Text übergeben bekommt, und von dieser Position an Anzahl Zeichen kopiert. Der Nachteil dieser Stringfunktion ist, dass sie keine anschließende '0' anhängt, und daher muss sich der Programmierer selbst darum kümmern.
Z.B.:

strcpy (Text, '12345678');
strncpy (Ziel, Text +3, 4);
// Ziel = 4567
Ziel[4] = '0';

JAVA

In JAVA gibt es keine Standardfunktion zum 'Teilstring herauskopieren'.

Cobol

In Cobol gibt es keine Standardfunktion zum 'Teilstring herauskopieren'.

8.4. Teilstring einfügen

Es gibt in den beschriebenen Programmiersprachen keine Standardfunktion um ein Teilstring einzufügen. In den angegebenen Programmiersprachen muss diese Funktion vom Programmierer selbst implementiert werden.

8.5. Teilstring löschen
(Text: Hello Miss America! Ergebnis: Hello America!)

Auch hierzu muss meistens der Programmierer selbst Hand anlegen.
In C kann man mit der Funktion
strcpy arbeiten um einen Teilstring zu löschen.
Z.B.:

Strcpy (Text+6, Text +11);

8.6. Teilstring ersetzen

Hierfür gibt es in keiner der beschriebenen Programmiersprachen eine Standardfunktion.
In Visual Basic kann man mit der Funktion
Mid die Zeichen im String überschreiben, aber nicht ersetzen.

In den anderen Programmiersprachen muss man diese Funktion ausprogrammieren.

8.7. Teilstring anhängen

Visual Basic

In Visual Basic steht zum zusammenhängen zweier Strings einfach das oder & zur Verfügung.

Ergebnis = Text1 + Text2 oder
Ergebnis = Text1 & Text2

C/C++

In C/C++ steht zum zusammenhängen zweier Strings die Standardfunktion strcat zur Verfügung.

strcpy (Ergebnis,Text1); // Text1 in Ergebnisstring kopieren
strcat (Ergebnis,Text2);
// Text2 an Ergebnissstring anhängen



Zwei in C++/MFC mit CString angelegte Zeichenkette, kann man auch mit oder & zusammenhängen.
Z.B.:

Ergebnis = Text1 + Text2; oder
Ergebnis = Text1 & Text2;

JAVA

In JAVA werden zwei Strings wie in Visual Basic mittels und & zusammengehängt.

Cobol

In Cobol steht zum zusammenhängen zweier Strings die Standardfunktion STRING zur Verfügung.

STRING Text1 Text2 DELIMITED BY SPACE INTO Ergebnis.

Tabellarische Übersicht


Visual Basic

C/C++

JAVA

Cobol

Vereinbarung

Dim Text As String

Char Text[anz+1];

 String Text;

77 Text PIC X (anz).

Zuweisung

Text$ = 'Hallo'

Strcpy (Text, 'Hallo');

 Text = 'Hallo';

MOVE 'Hallo' TO text.

Vergleich

Text = 'Hallo'

Strcmp(Text,'Hallo');

Text.equals('Hallo');
Text.compareTo('..');

Text = 'Hallo'

Länge ermitteln

Len (Text)

Strlen (Text);

 Text.Length();

Keine Standardfunktion

Teilstring suchen

Pos = Instr(Text, 'al')

Zeiger = strstr(Text, 'al');

 Keine Standardfunktion

Keine Standardfunktion

Teilstring herauskopieren

Text2 = Left$(Text,2)
Text2 = Right$(Text,2)
Text2 = Mid$(Text,3,2)

Strncpy(Text2,Text,2);

 Keine Standardfunktion

Keine Standardfunktion

Teilstring einfügen

Keine Standardfunktion

Keine Standardfunktion

 Keine Standardfunktion

Keine Standardfunktion

Teilstring löschen

Keine Standardfunktion

Keine Standardfunktion

 Keine Standardfunktion

Keine Standardfunktion

Teilstring anhängen

Text = Text + Text2
Text = Text & Text2

Strcat(Text,Text2);

Ergebnis=Text+Text2;
Ergebnis=Text&Text2;

STRING Text Text2 DELIMITED BY SPACE INTO Text.











Haupt | Fügen Sie Referat | Kontakt | Impressum | Nutzungsbedingungen







Neu artikel