Zeichenkette von Konsole lesen
-
Hallo zusammen,
ich muss für die Uni ein kleines Programm schreiben, welches zwei Zechenketten einliest und die Zeichen durcheinander wirft. Das hört sich einfach an, ich bekomme es aber nicht auf die Reihe.
Das Problem: Wir dürfen für diese Aufgabe nicht die C++ String Klasse und keine klassischen Funktionen aus <string.h> benutzen.
Außerdem müssen wir beliebig lange Zeichenketten behandeln können.
(Ich lerne erst seit einer Woche C++)mein ansatz:
#include <iostream> using namespace std; typedef struct { char text[10]; void *next; } buffer; int main(){ buffer* buf = new Buffer; cout << "jetzt was eingeben:"; while(*solange bis der cin buffer leer ist*) { cin.getline(buf.text, 10); } }Natürlich funktioniert das noch nicht:
- Wie teste ich, ob noch was in cin steht, was ich noch nicht in meinen buffer geschrieben habe
- ist der aufruf cin.getline(buf.text, 10); richitg? d.h. schreibe ich tatsächlich 10 zeichen in mien char-Array "text"?
Danke schonmal für Eure Hilfe.
Ein Lerndender.
-
Verwende std::string statt char-arrays
#include <string> #include <iostream> using namespace std; int main() { string text1, text2; cout << "1. Text: "; getline(cin, text1); cout << "2. Text: "; getline(cin, text2); }somit hättest Du zwei beliebig lange Zeichenketten eingelesen. Musst sie nur noch durcheinander bringen

-
Da ihr keine strings verwenden dürft wäre mein empfehlung
zwei vector<char> anzulegen und in diese mit einer kleinen Funktionungefähr so ...
void liesString(vector<char>& v) { char c; while(true); { cin.get(c); //bricht die Eingabe ab wenn ENTER gedrückt wird if(c=='\n'); break; //schreibt den char an die letzte Stelle des vectors v.push_back(v); } }... einzulesen
Da du dann die beiden pseudo strings in zwei vectoren hast kannst du
sie relativ einfach mit weiteren STL funktionen weiterverarbeiten.Also ... zusammenkopieren, duplikate entfernen, vermischen etc. etc.
-
Hallo Dark-eye,
danke für Deine Hilfe. Ich habe es hinbekommen.
Allerdings musste ich die while schleife so abändern:while((c = cin.get()) != '\n') {...}um das programm compilieren zu können.
gruß,
einLernender