Hilfe zu streams !
-
abgesehen davon, dass 60 dateien für ein paar kurze fragen ziemlicher unsinn sind, ist es recht kompliziert, die dateinamen zu generieren. mach lieber eine große textdatei und ließ sie ganz in ein string-array (bzw. std::vector)
geloeschtPS mit stringstreams kann man die dateinamen recht einfach erzeugen
-
also ich komm irgendwie nicht so recht weiter. Könnt ihr eventuell mal ein konkretes Beispiel geben wie ich 2 zeilen aus einer beliebigen datei zuerst in ein string und dann ein array speichere ??
-
istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );dein char[] kannst du dann im string-Konstruktor verwenden. Wie du ein Array von strings erstellst, weisst du doch, oder??
-
OK, ich will dir mal helfen:
struct SFrage { string Text; int Antwort; }; vector<SFrage> Fragen; ifstream datei("Fragen.txt"); char tmp[1024]; SFrage Frage; while(!datei.eof()) { datei.getline(tmp, 1023); // Text der Frage lesen Frage.Text = tmp; datei.getline(tmp, 1023); // Anwort lesen Frage.Antwort = atoi(tmp); Fragen.push_back(Frage); // Im vector speichern } // So, dann darauf zugreifen: int zufall = rand() % anzfragen; cout << Fragen[zufall].Text << endl;
ist aber ungetestet. Müsste aber funktionieren
-
die fragen in einen vector einlesen und dann mit dem index (das ist dann eben die zufallszahl) drauf zugreifen.
int main() { vector<string> fragen; fstream file("fragen.txt"); for (string frage; getline(file,frage); fragen.push_back(frage)); //einlesen srand(time(0)); cout << fragen[rand()%fragen.size()] << '\n'; //eine frage ausgeben }
das mit den antworten hab ich nicht ganz verstanden.
-
Moin,
Erstmal danke für die vielen Antworten. Ich habe es jetzt auch endlich mal geschafft die fragen in ein array zu laden ^^. Gibt es auch irgendeine Möglichkeit in der Textdatei kenntlich zu machen dass der Compiler bei der Ausgabe einen Zeilenumbruch macht ?????
-
willst du, dass dein proggi in die datei beim erstellen zeilenumbrüche macht?
Dann so:
file << "sonstwas" << endl;
-
Ich dachte eher so: Wenn der Zufallsgenerator die Zahl 29 liefert, dann liest er aus der fragen.txt die zeile 29 ( mit der frage) und aus der antworten.txt die zeile 29 mit den dazugehörigen Antworten. In dieser Zeile der antworten.txt stehen aber 3 antworten. Nun wollte ich wissen wie ich zwischen jede Antwort einen zeilenumbruch bekomme, denn ich lese ja die komplette Zeile in das Array ein.
-
Mal abgesehen davon das ich es für sinnvoller halte die gesamte Datei in deinem Programm abzuspeichern, könntest du einfach anstatt eines Zeilenumbruchs ein bestimmtes Zeichen in die Zeile schreiben, welches dir beim Auslesen sagt das hier die nächste Frage/Zeile anfängt.
-
Warum kein 2D-Array? :
char arrayname[60][100];
60 Fragen mit je 100 Zeichen...
Sollte auch keine Probs beim auslesen gebengreetz flo