C++ C-Strings

Life Sucks

Cadet 2nd Year
Dabei seit
Juli 2018
Beiträge
23
Hi,

ich hätte eine kurze frage.

Meine Aufgabenstellung: Für meine Aufgabe muss ich mit C-Strings arbeiten. Ich soll eine Zeichenkette eingeben, und dann noch eine Zeichenkette eingeben und suchen ob dies in der in der ersten Zeichenkette drinnen ist und ab welcher Position es anfängt ausgeben.

Meine Frage: Wie kann ich einen C-String als Eingabe in meine getline(...) einfügen?

Ich weiß ja z.B. char text[55] ist ja ein C-String. Geht das wenn ich schreibe getline(cin, text)??

Vielen Dank im Voraus.
 

nullPtr

Lt. Junior Grade
Dabei seit
März 2011
Beiträge
368
Nein, "char text[55]" ist *kein* C-String. Mit std::getline kannst du einen std::string einlesen, nicht aber das, was du willst. Es gibt allerdings auch ein getline(3) in einer POSIX-konformen libc. Das kannst du benutzen, genauso wie fgets(3). Schau dir außerdem strstr(3) an.
 

BlackMark

Lt. Commander
Dabei seit
Juni 2007
Beiträge
1.303
Zuletzt bearbeitet:

nullPtr

Lt. Junior Grade
Dabei seit
März 2011
Beiträge
368
Der C-Standard (§7.1.1) sagt: "A string is a contiguous sequence of characters terminated by and including the first null character".
"char text[55]" ist ein Char-Array der Länge 55. Was da für Daten drin aufgehoben werden (die String-Definition ist eine Aussage über Daten bzw. Werte) ist Semantik des Programms und hat nichts mit der Variable an sich zu tun. Deshalb ist die Aussage, "char text[55]" wäre ein C-String, nicht richtig. Allerdings kann "char text[55]" selbstverständlich einen C-String enthalten; muss aber nicht.
 

BlackMark

Lt. Commander
Dabei seit
Juni 2007
Beiträge
1.303
@nullPtr Genau das wollte ich hören. Denn OP wird das sicher nicht aus deiner Aussage geschlossen haben.

Also, für den OP, nochmal vereinfacht: Ein C-String ist eine Folge von Characters mit einer 0 (Wert 0, nicht Symbol '0') am Ende, um anzuzeigen wo der String endet. Den kannst du speichern wo du willst, aber ein char Array bietet sich an, wie zB dein char text[55];. In dieser Variable kann also ein C-String gespeichert werden, aber die Variable selbst ist deshalb kein C-String, nur ein Container für einen C-String.

Gruß
BlackMark
 

Andreas_

Commander
Dabei seit
Jan. 2017
Beiträge
2.099
Ein einfaches Beispiel für einen C-String:
C:
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
Wenn man mit C programmiert, dann erzeugt
C:
char greeting[] = "Hello";
das gleiche Ergebnis.

Um unter C++ mit C-Strings zu arbeiten gibt es die Library <cstring>
 
Zuletzt bearbeitet:
Top