Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben
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

Geschrieben
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

Geschrieben

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

Geschrieben

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]

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...