ComputNik Geschrieben 2. Januar 2003 Geschrieben 2. Januar 2003 Hallo, Ich habe einen übersetzer geschrieben als quelle dient eine Textdatei deutsches wort mit tab vom englischen getrennt. ich will per zufallszahl etc. eine zeile auslesen und dann entweder das englische oder das deutsche ausgeben. Der benutzer gibt die jeweilige übersetzung ein, dann wird abgefragt richtig falsch etc. Was ist schon da: anzahl der zeilen aus der datei. eine zufallszahl mit time() und rand() Ich brauche etwas was sagt "lese die zeile 'zufall' aus einer datei aus. Ich hab das mit einer schleife probiert und fgets() mehrmals ausgeführt, das ist aber ziemlich umständlich und funktioniert hat das auch nicht so recht Danke
nic_power Geschrieben 2. Januar 2003 Geschrieben 2. Januar 2003 Originally posted by ComputNik Ich brauche etwas was sagt "lese die zeile 'zufall' aus einer datei aus. Ich hab das mit einer schleife probiert und fgets() mehrmals ausgeführt, das ist aber ziemlich umständlich und funktioniert hat das auch nicht so recht Das ist aber wahrscheinlich die einfachste Methode. Falls die Datei nicht zu gross ist, solltest Du sie vorher im Stueck einlesen. Dann geht der Zugriff bedeutend schneller und Du kannst direkt ueber einen Index auf die einzelnen Zeilen zugreifen. Nic
Klotzkopp Geschrieben 2. Januar 2003 Geschrieben 2. Januar 2003 Oder: Die Datei einmal komplett durchgehen, und die Positionen der einzelnen Zeilenanfänge merken. Dann kann man später direkt an diese Stelle springen.
nic_power Geschrieben 2. Januar 2003 Geschrieben 2. Januar 2003 Originally posted by Klotzkopp Oder: Die Datei einmal komplett durchgehen, und die Positionen der einzelnen Zeilenanfänge merken. Dann kann man später direkt an diese Stelle springen. Dafuer muesste ich sogar noch irgendwo ein Stueck Code rumfliegen haben. Bei Interesse kann ich das mal raussuchen. Nic
ComputNik Geschrieben 2. Januar 2003 Autor Geschrieben 2. Januar 2003 die ganze datei einlesen würde zwar gehen ist aber doch nicht so das wahre. die Positionen der einzelnen Zeilenanfänge merken gefällt mir gut nur hab ich keine ahnung wie ich das anstellen soll das bissel Code währ also nicht schlecht. Danke
Klotzkopp Geschrieben 5. Januar 2003 Geschrieben 5. Januar 2003 Wie wär's denn damit: #include <vector> #include <fstream> #include <string> #include <iostream> using namespace std; vector<int> GetLinePositions( const string& filename ) { vector<int> linestart; if( ifstream textfile( filename.c_str() ) ) { string line; while( true ) { linestart.push_back( textfile.tellg() ); getline( textfile, line ); if( textfile.eof() ) { break; } } } return linestart; } string GetLineStartingAt( const string& filename, int startpos ) { string line; if( ifstream textfile( filename.c_str() ) ) { textfile.seekg( startpos ); if( !textfile.eof() ) { getline( textfile, line ); } } return line; } int main() { string filename = "C:\\WINDOWS\\system32\\eula.txt"; vector<int> linestart = GetLinePositions( filename ); vector<int>::iterator i, iend = linestart.end(); for( i = linestart.begin(); i != iend; ++i ) { cout << *i << endl; cout << GetLineStartingAt( filename, *i ) << endl << endl; } }[/CODE]
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden