C++ C-Strings

Life Sucks

Cadet 2nd Year
Registriert
Juli 2018
Beiträge
29
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.
 
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.
 
  • Gefällt mir
Reaktionen: Life Sucks
nullPtr schrieb:
Nein, "char text[55]" ist *kein* C-String.
Das ist definitiv eine nicht triviale Aussage, die du begründen musst. Ich stimme dir zu, das ist kein C-String, aber mich interessiert deine Begründung.

@Life Sucks Schau dir auch gleich scanf an, auch wenn es eine ganze Menge an Problemen hat, zu den Basics der Eingabe gehört es dazu.

Gruß
BlackMark
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: new Account()
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.
 
  • Gefällt mir
Reaktionen: BAGZZlash und BlackMark
@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
 
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:
  • Gefällt mir
Reaktionen: BlackMark
Zurück
Oben