C++ Strings
-
Werner Salomon schrieb:
.. und falls Dir einer was mit getline vorschlägt - vergiss es!
wieso, ist getleine böse?
-
c++ n00b schrieb:
Werner Salomon schrieb:
.. und falls Dir einer was mit getline vorschlägt - vergiss es!
wieso, ist getleine böse?
Nein, aber es ist hier nicht die richtige Antwort.
-
Ich wollte ein Programm schreiben, welches MicroForth heißt.
Das will ich nach dem Prinzip von einem in BASIC geschriebenen Programm anschließen, das verarbeitet nämlich die Eingabe nach den Strings.
Das will ich auch machen. Vorteile wären bei C++, dass man das Programm leichter strukturieren kann. In BASIC hat man die Zahlen davor.
Das Programm verarbeitet die Eingaben und speichert sie.
Wenn ich eingebe
: Test 100 1 do i . loop
Dann Test eingeben:
1,2,3,4,5,6,7,8,9,10...100
So soll das Programm die Strings in einen Teilstring einspeichern und dann verarbeiten.
-
Christoph-C++ schrieb:
So soll das Programm die Strings in einen Teilstring einspeichern und dann verarbeiten.
Das ist das Problem. Das alte EVA-Prinzip.
-
Wie kann ich sowas machen?
-
volkard schrieb:
Christoph-C++ schrieb:
So soll das Programm die Strings in einen Teilstring einspeichern und dann verarbeiten.
Das ist das Problem. Das alte EVA-Prinzip.
Oder REPL ...
Wie kann ich sowas machen?
1.) Read: Einlesen des gesamten Strings.
2.) Eval: String zerlegen und interpretieren
3.) Print: Ergebnis anzeigen
4.) Loop: Gehe zu Schritt 1.)MicroForth
Es gibt soooviel Tutorials, wie Forth zu implementieren ist, google ist dein Freund.
-
knivil schrieb:
volkard schrieb:
Christoph-C++ schrieb:
So soll das Programm die Strings in einen Teilstring einspeichern und dann verarbeiten.
Das ist das Problem. Das alte EVA-Prinzip.
Oder REPL ...
Wie kann ich sowas machen?
1.) Read: Einlesen des gesamten Strings.
2.) Eval: String zerlegen und interpretieren
3.) Print: Ergebnis anzeigen
4.) Loop: Gehe zu Schritt 1.)Mit EVA meinte ich
1.) Eingabe
2.) Verarbeitung erst, wenn Eingabe abgeschlossen.
3.) Ausgabe erst, wenn Verarbeitung abgeschlossen.Und so kommts,
- aus einem istream die eingabe lesen und in einen string stecken.
- den in einen istringstream stecken und als istream behandeln, um ihn zu interpretieren. Und davon wird Werner immer so traurig.
-
den in einen istringstream stecken und als istream behandeln, um ihn zu interpretieren. Und davon wird Werner immer so traurig.
Ja, denn es gibt keinen Grund das zu machen. Welcher Vorteil ist dabei?
-
volkard schrieb:
Mit EVA meinte ich
Ich weiss, nur dachte ich, dass EVA ein schlechter Suchbegriff ist. Aber ich bin von google positiv ueberrascht. Der zweite Treffer gleich.
-
Christoph-C++ schrieb:
Genau
wie mach ich das, dass man nur eine Zeile eingeben muss.Nur eine Zeile eingeben:
#include <iostream> #include <string> #include <vector> #include <sstream> #include <iterator> using namespace std; int main() { cout << "eine Zeile eingeben:\n"; string zeile; getline(cin,zeile); istringstream iss(zeile); vector<string> worte( (istream_iterator<string>(iss)), (istream_iterator<string>()) ); // Ab hier hast du nun alle Wörter in einem Array... }Ich würde es aber nicht so machen. Finde Werners Vorschlag besser.