Anfänger braucht Hilfe :)
-
Ganz tollo
gotos
-
d.open("Deutsch", ios::out); e.open("English", ios::out);Du hättest dein Problem von Anfang an nicht, wenn du direkt den richtigen Filestream verwendet hättest.
std::ifstream d("Deutsch"); std::ifstream e("English");Nennt sich RAII. Mit RAII ist auch folgendes unnötig:
d.close(); e.close();cin.ignore(std::cin.rdbuf()->in_avail());Tut nicht, was du willst. Was du willst, ist:
std::cin.ignore(std::numeric_limits<std::steamsize>::max());while (!d.eof())Ist eine falsche Bedingung. Richtig wäre:
while(std::getline(d, wortd) && std::getline(e, worte))Deine ganzen gotos und Sprungmarken sind Käse, dafür gibts Schleifen und Funktionen.
-
314159265358979 schrieb:
Nennt sich RAII.
CStoll schrieb:
PS: Und ich wette mit dir, daß gleich Pi vorbeikommt und dich auf RAII hinweist

Respekt, auf dich ist verlass!

-
otze schrieb:
Respekt, auf dich ist verlass!

Muss ja, kann den armen CStoll doch nicht ewig warten lassen

-
314159265358979 schrieb:
Was du willst, ist:
std::cin.ignore(std::numeric_limits<std::steamsize>::max());Nicht ganz, denn die Zeile ignoriert alles, was jemals noch aus cin gekommen wäre (oder zumindest die nächsten... ähh.. 4 GiB).
Eine Abbruchbedingung wäre gut. Die zweite Überladung von ignore ignoriert Zeichen bis entweder die übergebene Anzahl erreicht oder ein Delimiter gelesen wurde:
std::cin.ignore(std::numeric_limits<std::steamsize>::max(), '\n');
-
Da hast du natürlich Recht, Schande über mein Haupt

-
Falls TE meckert, dass
std::cin.ignore(std::numeric_limits<std::steamsize>::max(), '\n');nicht funktioniert hier der Hotfix:
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
-

-
DocShoe schrieb:
Hotfix:
Verdammtes Coy & Pate...
-
Danke für eure Hilfe;)
aber eine frage hätte ich noch, da ich es noch nciht weiss:
Gibt es ne möglichkteit beid.getline(wortd, sizeof(wortd))Eine zufällige Zeile auszulesen?
Schonmal danke im vorraus;)
Nimiz
-
Nimiz schrieb:
Danke für eure Hilfe;)
aber eine frage hätte ich noch, da ich es noch nciht weiss:
Gibt es ne möglichkteit beid.getline(wortd, sizeof(wortd))Eine zufällige Zeile auszulesen?
Schonmal danke im v******;)
Nimiz
Erst einmal: Nimm keine char-Arrays, nimm std::string und das dazugehörige getline. Du wirst dankbar sein.
Und zweitens: Nein. Zumindest gibt es keine magische Funktion
get_random_line. Da musst du selber anfangen zu zauber und sie dir selber schreiben. Empfohlene Vorgehensweise: Alle Zeilen einlesen und speichern (std::vector). Bei Bedarf nach einer zufälligen Zeile eine zufällige Zeile aus dem vector nehmen (neuer Header random, oder falls noch nicht vorhanden rand aus cstdlib).
-
Nimiz schrieb:
Schonmal danke im v******;)
Um die naechste Frage vorwegzunehmen:
voraus