Zeilenweises auslesen aus einer Text-Datei
-
Hi,
Shade Of Mine schrieb:
schau halt in de ANSI C oder C++ FAQ...
Werde ich tuen.
Shade Of Mine schrieb:
was du machst ist eher Java...
"Weiche Java, weiche!", Java will ich nicht machen. Ich dachte
es heißt C with Classes, deshalb habe ich es übertrieben.Shade Of Mine schrieb:
Ne, inlinen tut sowieso der Compiler. Und selbst wenn - function calls sind so billig geworden, damit reisst du nix mehr...
Naja ich denke ich weis jetzt woran es liegt, es sind Französische Vokabeln also lauter é à ... daran wird es wohl liegen.
Der Zufallsgenerator funktioniert prächitig.
Vielen dank.cu max
-
Master_Max schrieb:
"Weiche Java, weiche!", Java will ich nicht machen. Ich dachte
es heißt C with Classes, deshalb habe ich es übertrieben.Java ist doch nix böses
C++ hat den Vorteil, dass du Funktionen verwenden kannst, wo es Sinn macht.
zB getRandomNumber() ist eine super Funktion... Ich wüsste nicht, was es in einer Klasse verloren hätte...Naja ich denke ich weis jetzt woran es liegt, es sind Französische Vokabeln also lauter é à ... daran wird es wohl liegen.
was meinst du damit?
es ist getline() egal was für Zeichen es einliest. Schließlich ist ein é ja auch nur 1 Byte... bzw. 2 Byte falls wir von Unicode reden...
-
Hi,
danke vielmals.Shade Of Mine schrieb:
Java ist doch nix böses
Ich habe mir mal ein Buch darüber besorgt und war nicht begeistert,
kann aber auch an dem Buch liegen.Shade Of Mine schrieb:
was meinst du damit?
es ist getline() egal was für Zeichen es einliest. Schließlich ist ein é ja auch nur 1 Byte... bzw. 2 Byte falls wir von Unicode reden...
OK, es ist Getline egal, aber dan muss es an meinem Vergleich des eingelesenen und eigegbenen liegen:
(vereinfacht und ungetestet)int main(){ string ReadLineValue; ReadLineValue=Stream().ReadLine("VokabelnDeutsch.txt",Random); cout <<ReadLineValue;//Deutsche Ausgabe string ReadLineLanguage; ReadLineLanguage=Stream().ReadLine("VokabelnFrench.txt",Random); string InVoc; cin >> InVoc; if(InVoc==ReadLineLanguage){ cout << "richtig"<<endl<<endl; } else{ cout << "wrong"<<endl<<endl; } }
Aber das müsste stimmen, ich vergleiche ja einfach zwei strings.
Hat jemand noch eine Idee woran es liegen könnte?
cu max
-
liegt es uU an einem \n als letztes Zeichen im string?
und vorallem: was machst du bei zB
satisfy und als Antwort müsste dann ja gelten 'zufriedenstellen', 'befriedigen',...wie löst du dieses Problem?
-
Hi,
Shade Of Mine schrieb:
liegt es uU an einem \n als letztes Zeichen im string?
Ich dachte das dies nur für char arrays gilt.
Shade Of Mine schrieb:
und vorallem: was machst du bei zB
satisfy und als Antwort müsste dann ja gelten 'zufriedenstellen', 'befriedigen',...wie löst du dieses Problem?
Sorry, ich verstehe deine Frage nicht.
Du musst wissen das ich sehr neu in C++ bin und mich noch nicht wirklich mit der Materie vertraut gemacht habe.PS:Frohe Weihnacht.
Lassen wir ersteinmal diesen Thread, ich will dich nicht am Heiligen Abend plagen, da ich heute ein Buch bekomme worin vielleicht ein Erklärung zu finden ist.cu max
-
Master_Max schrieb:
Ich dachte das dies nur für char arrays gilt.
Ich meine das \n (newline) Zeichen, dass uU noch am Ende vom string stehen kann - weil du ja eine ganze Zeile ausgelesen hast...
Shade Of Mine schrieb:
und vorallem: was machst du bei zB
satisfy und als Antwort müsste dann ja gelten 'zufriedenstellen', 'befriedigen',...wie löst du dieses Problem?
Sorry, ich verstehe deine Frage nicht.
Du musst wissen das ich sehr neu in C++ bin und mich noch nicht wirklich mit der Materie vertraut gemacht habe.Ich meine damit eigentlich, dass Vokabeln nicht 1:1 übersetzt werden können, und man deshalb mehrere richtige Antworten geben kann.
Da ich kein französich kann, bringe ich eben englisch<->deutsch beispiele.
zB
bedeutet satisfy ja sowohl 'befriedigen' als auch 'zufriedenstellen'
oder run heisst sowohl 'laufen' als auch 'rennen'das ist kein Programmierproblem - sondern ich wollte dich lediglich darauf hinweisen...
-
Hi,
Shade Of Mine schrieb:
Ich meine das \n (newline) Zeichen, dass uU noch am Ende vom string stehen kann - weil du ja eine ganze Zeile ausgelesen hast...
Ich dachte eigentlich das an einen string den ich mit cin einlese auch ein \n angehängt wird, falls das nicht der Fall sein sollte werde ich wohl mit
getline(cin,)arbeiten müssen.
Ich werde aber heute Abend wohl nicht mehr dazu kommen....Shade Of Mine schrieb:
Ich meine damit eigentlich, dass Vokabeln nicht 1:1 übersetzt werden können, und man deshalb mehrere richtige Antworten geben kann.
Da ich kein französich kann, bringe ich eben englisch<->deutsch beispiele
Achso, sorry, ich war ein bisschen im Weihnachtsstress
.
Naja ich habe die Vokabeln aus dem Französisch-Buch abgetippt und erwarte halt die Antworten die da drinnen stehen. Das ganze soll ja nicht
komerziell oder so werden, sondern nur den Schülern meiner Schule beim Vokabellernen ein bisschen unter die Arme greifen, deshalb ist die einzige lösung die ich dazu anbieten kann eine dritte datei (Französisch) zu machen, wo ein gleichbedeutendes Wort an der Zeile steht und das ganze dann mit dem oder Operator lösen.Shade Of Mine schrieb:
das ist kein Programmierproblem - sondern ich wollte dich lediglich darauf hinweisen...
Danke ich hatte ehrlich gesagt noch gar nicht drangedacht.
Ich wünsche dir und allen anderen dadrausen ein schönes Fest und eine zufriedenstellende Bescherung :xmas1: (falls sie noch nicht war).
PS:Das gute an dem Programm soll sein das man später(ich werde ermitteln wo das ende der Datei ist)einfach andere Textdateien benutzen kann, das Programm wird das nicht weiter jucken.
cu max
-
Hi,
oder noch einfacher:string eingabe; cin >> eingabe; eingabe=+"\n";
Vielen dank.
cu max
-
Hi,
ich habe beides ausprobiert, leider ohne erfolg.
Irgendwo habe ich mal gehört das man das letzte einlesen löschen muss,
mit cin.sync(); oder soetwas, ich werde mich mal informieren, vielleicht
bringt das die Lösung.cu max
-
string InVoc; cin >> InVoc; cin.sync(); cin.clear();
Hat das Problem mit dem einlesen und somit dem falschen Vergleich tatsächlich beseitigt.:D
Jetzt habe ich nur noch das Problem mit den Deutschen umlauten in der Konsole und ein paar französischen Fehlern. Ich hoffe das mit der FAQ lösen zu können.Vielen dank @Shade Of Mine.
cu max