Textdatei auslesen
-
ok.. habs gemerkt...
int main() { cout << "Eingabe des Textes => "; getline(cin,Text); cout << Text << endl; lesen(); while(!ein.eof()) { ende=0; ende2=0; anfang=0; anfang2=0; ende=Zeile.find(":"); ende=ende-1; anfang=0; for(int a=anfang;a<=ende;a++) { Englisch += Zeile[a]; } anfang2=ende+2; ende2=Zeile.find("::"); ende2=ende2-1; for(int a=anfang2;a<=ende2;a++) { Uebersetzung += Zeile[a]; } cout << Englisch << " " << Uebersetzung << endl; lesen(); } return 0; } void lesen(void) { getline(ein,Zeile); }
kann mir einer sagen warum sich die schleife nicht wiederholt.. obwol sie es vorher gemacht hat? ... hab ich was gelöscht? .. ich sehs nicht
das Prog läuft sauber durch.. aber nur ein mal... die Textdatei hat aber zwei zeilen.. daher müsste es zweimallaufen... was es aber nicht macht...
-
Also ich glaube nicht, das das Programm in dem Zustand jemals gelaufen ist.
Und nochmal: finix (und andere) haben dir den Tipp gegeben std::string::substr() zu nutzen. Das ist eine Methode von std::string, die dir die Schleifen zum Rauskopieren spart.
Edit: Ein Wort zu viel...
-
naja da muss ich dich halt enttauschen... aber es läuft... ganz nach wunsch... aber eben nur ein mal...
.. da ist ja noch was... die positionen an denen man die Teile herrausnehmen muss müssen ja erst ermittelt werden, die stehen nicht fix fest... daher habe ich das auch noch ermittel.. naja alles geht... nur leider ohne wiederholung...
zum Teufen... ich bin blind den
Fehler zu sehen
-
Makconner schrieb:
naja da muss ich dich halt enttauschen... aber es läuft... ganz nach wunsch... aber eben nur ein mal...
.. da ist ja noch was... die positionen an denen man die Teile herrausnehmen muss müssen ja erst ermittelt werden, die stehen nicht fix fest... daher habe ich das auch noch ermittel.. naja alles geht... nur leider ohne wiederholung...
zum Teufen... ich bin blind den
Fehler zu sehen
also wenn das läuft dann verwendest du bestimmt keinen C oder C++ compiler.
meiner mag es gar nicht wenn man variablen nicht deklariert oder nicht deklarierte funktionen verwendet
K.
-
Deine Namensgebung ist wirklich sehr lobenswert.
Seas Name
-
dann erklär uns doch mal genau dein problem, positionen zu ermitteln etc is doch kein problem...darauf dann substring...also red mit uns...
-
Och man.... natürlich ist das nur der Main-Auszug... also wirlich !! ...
das Problem ist das die schleife sich nicht wiederholt... aber ich schreib das jetzt nochmal.. eventuell hab ich was gelöscht
-
na ok.. hier der neue, ganze Code
#include <iostream> #include <string> #include <fstream> using namespace std; ifstream ein("Hirn.txt"); string Zeile; void lesen(void); int main() { lesen(); while(!ein.eof()) { cout << Zeile << endl; lesen(); } return 0 ; } void lesen(void) { getline(ein,Zeile); }
in der Textdatei sind zwei Zeile...
eigentlich sollten beie Zeine nach und nach eingelesen und ausgedruckt werden... aber er liest nur die erste und dann is ZICK....wieso wiederholt er nicht?
-
Makconner schrieb:
na ok.. hier der neue, ganze Code
#include <iostream> #include <string> #include <fstream> using namespace std; ifstream ein("Hirn.txt"); string Zeile; void lesen(void); int main() { lesen(); while(!ein.eof()) { cout << Zeile << endl; lesen(); } return 0 ; } void lesen(void) { getline(ein,Zeile); }
in der Textdatei sind zwei Zeile...
eigentlich sollten beie Zeine nach und nach eingelesen und ausgedruckt werden... aber er liest nur die erste und dann is ZICK....wieso wiederholt er nicht?
warm sollte er? wenn die zweite zeile gelesen ist, ist die datei ja schon am ende (wie ich annehme), folglich wird dieser letzte string auch nicht ausgegeben.
-
-
nunja.. er soll schon.. aber ich hab den Fehler gefunden .. und der lag nicht am Code ....
aer ok... nächste Frage:
hier haben wir eine Bedingung
while(Text[b]!=' ')
die da heist:
"solange Text in Abhängigkeit von b nicht " " ist wiederhole die Schleife.. soweit so gut
aber ich brauche eine ODER-Verknüpfung und irgendwie bekomm ich es nicht hin.
ich würde es ja so schreibenwhile(Text[b]!=' ' || Text[b]!='\0')
aber das mag er nicht...
-
Ich glaube du solltest dir nochmal die Logischen Operatoren genauer anschauen.
Folgendes:- || (Oder) ist true, wenn eine Bedingung true ist. - && (Und) ist true, wenn alle Bedingungen true ist.
In deinem Falle musst du den Oder-Operator durch einen Und-Operator ersetzen. Dann wird die Schleife nämlich nur ausgeführt, wenn alle Bedingungen true sind.
Caipi