[c++] Fstream Prob

SFDrake1904

Cadet 3rd Year
Registriert
Apr. 2005
Beiträge
51
Also ihr müsst mir mal sagen ob hier irgendwas vergessen hab:
Code:
[..]

void loadDB() {

ifstream LOAD;
unsigned int amount[MAX_A];
string product[MAX_A];
string filename = "db.txt";

LOAD.open(filename.c_str(), ios_base::in);

if(!LOAD) {
cout << "Datei konnte nicht gefunden werden; Programm wird beendet!" << ends;
exit(2);
}

for(int i = 0; i <= MAX_A; i++) {

 LOAD >> product[i] >> amount[i];
}

LOAD.close();

}
Denn obwohl die Datei im selben Ordner ist wie die .exe, gibt er mir beim Start des Programms die Fehlermeldung oben aus.

Hab ich irgendwass vergessen und/oder falsch gemacht?

Danke im voraus!
 
Zuletzt bearbeitet von einem Moderator:
Hallo SFDrake1904,

welche Entwicklungsumgebung benutzt Du?

Beim VC++ ist das WorkingDirectory nicht unbedingt gleich dem Dir wo das Exe liegt, bzw. kann man das einstellen.

Zum testen kannst Du einfach mal ein getcwd() machen und das aktuelle Directory anzeigen lassen. Dann siehst Du gleich ob die Datei überhaupt im aktuellen Verzeichnis ist.

MfG

Arnd
 
Hallo Arnd,

Ich benutze VC++ 6.0 und das WorkingDirectory ist richtig (ich starte sowieso das Programm immer direkt, nicht über die Entwicklungumgebung)

Das kann es also nicht sein.

Gruß, Drake
 
Hallo Drake,

folgendes Testprogramm läuft bei mir, bzw. findet die Datei. Allerdings stürzt es dann bei der Ausgabe ab, da Du die lokalen Variablen nicht initialisierst :-).

Code:
// Test.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
//

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <xstring>

using namespace std;

#define MAX_A 1024

void loadDB() 
{
	
	ifstream LOAD;

	unsigned int amount[MAX_A];
	string product[MAX_A];
	string filename = "db.txt";
	
	LOAD.open(filename.c_str(), ios_base::in);
	
	if(!LOAD) {
		cout << "Datei konnte nicht gefunden werden; Programm wird beendet!" << ends;
		exit(2);
	}
	
	for(int i = 0; i <= MAX_A; i++) {
		
		LOAD >> product[i] >> amount[i];
	}
	
	LOAD.close();
	
}

int main(int argc, char* argv[])
{
	printf("Hallo Welt!\n");
	loadDB() ;

	return 0;
}

Ich nehme einfach mal an das die Datei wohl nicht vorhanden, bzw. nicht lesbar ist.

MfG

Arnd
 
Hallo Arnd,



OH MIST*sichmitderhandvordenkopfhau*!

Das mir das nicht nicht eher aufgefallen ist!

Die Datei hab ich ausversehen nicht db.TXT ganannt, sondern RTF!

Der Grund: die Datei stammt aus einem älteren von mir programmierten Programm , die ich zu testzwecken benutzt habe!

Lokale Variablen hab ich auch initialisiert und funzt jetzt ohne Probleme.

Danke, Arnd.

Gruß Drake
 
Zurück
Oben