fehler in lesefunktion von einer datei
-
hallo,
habe in einer header datei folgenden code:
bool MMHV::OpenRead_File(string file_name, int &anzahl_datensaetze, list<HV_Liste_Daten> &liste) { ifstream in(file_name.c_str()); if(in) { while(!in.eof()) { if(++zeile > 1) { getline(in, line_tmp); tmp = Filter_Line(line_tmp); liste.push_back (tmp); } } anzahl_datensaetze = (int)liste.size(); return true; } else return false; }Nach dem laufen des programms sagt er mir aber das "Der Vorgang "written" konnte nicht auf dem Speicher durchgeführt werden."
Benutze Dev C++.
Hoffe ihr könnt mir helfen.
Gruß
-
Ich kenne die von Dir verwendete Programmier-Bibliothek MHV nicht. Es sieht so aus, dass Du die Datei nur zum Lesen, nicht auch zum Schreiben, geöffnet hast. Verwende einfach normale C++ Funktionen.
-
Lies Dir vielleicht mal das hier durch.
-
Hier mal alles komplett:
MM_HV.h
#include <string> #include <list> #include <fstream> #include <iostream> using namespace std; struct HV_Liste_Daten { string datum; string tester; string pruefer; }; class MMHV { string line_tmp; int zeile; HV_Liste_Daten tmp; public: MMHV(); bool OpenRead_File(string file_name, int &anzahl_datensaetze, list<HV_Liste_Daten> &liste); HV_Liste_Daten Filter_Line(string str_line); };MM_HV.cpp
#include "MM_HV.h" MMHV::MMHV() { zeile = 0; } bool MMHV::OpenRead_File(string file_name, int &anzahl_datensaetze, list<HV_Liste_Daten> &liste) { ifstream in(file_name.c_str()); if(in) { while(!in.eof()) { if(++zeile > 1) { getline(in, line_tmp); tmp = Filter_Line(line_tmp); liste.push_back (tmp); } } anzahl_datensaetze = (int)liste.size(); return true; } else return false; } HV_Liste_Daten MMHV::Filter_Line(string str_line) { if(str_line.find(';')!=string::npos) { size_t pos1= str_line.find(';'); size_t pos2= str_line.find(';',pos1+1); HV_Liste_Daten t; string trennen_tester; trennen_tester.append(str_line.begin()+pos1+1,str_line.begin()+pos2); t.tester = trennen_tester; string trennen_datum; trennen_datum.append(str_line.begin(),str_line.begin()+pos1); t.datum = trennen_datum; string trennen_pruefer; trennen_pruefer.append(str_line.begin()+pos2+1,str_line.end()); t.pruefer = trennen_pruefer; return t; } }main.cpp
#include <cstdlib> #include <iostream> #include "MM_HV.h" using namespace std; int main(int argc, char *argv[]) { MMHV Daten_HV; list<HV_Liste_Daten> my_list; list<HV_Liste_Daten>::iterator it; int anzahl; bool test = true; test = Daten_HV.OpenRead_File("HV_Test_MM.csv", anzahl, my_list); if(test) {cout<<endl<<endl<<" Anzahl der Datensätze: "<<anzahl<<endl;} HV_Liste_Daten ausgabe; for (it = my_list.begin(); it != my_list.end(); ++it) { ausgabe = *it; cout<<ausgabe.datum<<" "<<ausgabe.tester<<" "<<ausgabe.pruefer<<endl; } system("PAUSE"); return EXIT_SUCCESS; }als beispiel für den Umgang mit dateien habe ich diese seite hergenommen:
http://ittk.falb.at/pt/unterlagen/vcppk/dateien.html