Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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

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

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]

:uli

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.