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.

Puffer zum Einlesen einer Datei definieren (ifstream).

Empfohlene Antworten

Veröffentlicht

Hallo Forum,

nächstes Problem:

Ich möchte eine Datei mittels ifstream einlesen.

Dazu muss ich einen Puffer angeben.

z.B. char p[50]

Kann ich irgendie die tatsächliche Grösse der Datei ermitteln, nach dessen Wert sich dann mein Puffer richtet?

Gruss Volkaman.

usage von ifstream:


ifstream datei("/home/daten/meine.datei");

if (!datei) cout << "\nKonnte Datei nicht öffnen!";  

datei ist der dateihandler, in den klammern steht der pfad.

ansonsten wars das.

was für einen puffer meinst du?!

ich muss für das einlesen der datei doch platz reservieren. dieser soll sich nach der tatsächlichen grösse der zu öffnenden datei richten....

also, erst öffnest du die datei (s.o.)

dann liest du immer eine zeile in einen string ein. du speicherst dann ja nicht die komplette datei ab. zeilen haben selten mehr als 2000 zeichen ...


#include ...

#define MAXSTRLEN 2000


void main() {


char puffer[MAXSTRLEN];


ifstream datei("/home/daten/meine.datei");

if (!datei) cout << "\nKonnte Datei nicht öffnen!";  


while (!datei.eof()) {


datei.getline(puffer,MAXSTRLEN);


}

}


Super!!!

Das schickt!

Vielen Dank!

wenn du jetzt doch (aus welchem grund auch immer) einen puffer haben möchtest der so groß ist wie die ganze datei, dann kannst du es so machen:

#include <sys/stat.h>	// _stat

...

int size;	

struct _stat buf;

...

size = buf.st_size;

char *buffer = new char[size];

...

dann ist buffer so groß wie die datei, aber ob es sinn macht..... eher nicht, stell dir vor du musst mit einer datei arbeiten die 1gb groß ist :D

du solltest es also so machen wie poldi es erklärt hat :)

wie kann ich ihm denn noch verklickern, dass er mir die zeile in einen cstring liest???

Meinst du jetzt einen C-String (nullterminiertes char-array) oder ein Objekt der Klasse CString ?

Ich meine das Objekt.

Cstring dehalb, weil ich dann die Methoden benutzen kann.

Ich will nämlich im String (in der Zeile) nach Strings suchen.

so ein zufall..

die gleiche aufgabe habe ich gestern abend mit einem freund gemacht.. der hatte ein arbeitsblatt von der berufsschule bekommen... aber egal :)

char string[256]

char suchstring[]="hanspeter";

fin.getline(string) war das glaube ich das der eine ganze zeile in den buffer "string" schreibt..

dann kannste mit strstr(string, suchstring) den string nach dem suchstring durchsuchen.. das ganze machste in einer while schleife mit eof oder feof...

bye

SUPAAAAAA!!!!!!

kannst das auch so machen:

char puffer[2000];

String zeile;

strcpy(puffer,"bla bla bla bla bla bla");

zeile = puffer;

cout << "\nzeilenlänge: " << zeile;

dat funzt jenauso.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

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.