Ifstrem/Infile Text wird nicht eingelesen
-
hallo, ich bin neu hier
zz geh ich in die 3te Klasse einer HTL für EDVO und habe dieses Jahr C++ und will nu meine Hausaufgabe machen und stehe vor dem Problem, das ich aus einer Datei nichts einlesen kann, hab die SUFU schon verwendet aber das hat mir leider nichts gebracht
ich arbeite mit Mircrosoft Visual Studio 2005
void main(void) { char a[4]; //für charakters mit 3 Buchstaben /*ifstream infile; ofstream outfile; outfile.open("C:\Users\Christoph\Documents\Namen.txt",ios::app); outfile.close(); infile.open("C:\Users\Christoph\Documents\Namen.txt", ifstream::in); infile.getline (a, 4); */ std::ifstream file("C:\Users\Christoph\Documents\Namen.txt"); file.unsetf(std::ios_base::skipws); std::string s((std::istream_iterator<char>(file)), std::istream_iterator<char>()); cout<<file<<endl; cout<<h(konvert(file))<<endl; // infile.close(); system("Pause"); }in der Textdatei stehen Zeilenweise 3 Buchstaben
Abc
Def
Ghi usw...weder das sdt:ifstream noch das ifstream infile liefern mir irgendeinen dieser Charakter (die in meinem Textdokument stehen), weis da evtl wer weiter?
(bei cout<<a; und cout<<file; kommt nichts raus (oder 0000000) )
(die Konvert funktion konvertiert den string in eine Zahl und die h Funktion macht die Zahl % (mod) 23)
auch wenn nichts rauskommt kommt dann halt die fehlermeldung
Fehler 4 error C2664: 'konvert': Konvertierung des Parameters 1 von 'std::ifstream' in 'char *' nicht möglich c:\Users\Christoph\Documents\Visual Studio 2005\Projects\hash-ADAT\hash-ADAT\hash.cpp 25da is es mir klar das es nicht Konvertiert werden kann, aber jedoch brauch ich das dann schon im Konvert
LG und danke schon im vorraus Fanati_c
-
Das liegt daran das die daten schon in "s" stehen in dem string. Du versuchst aber mit dem filestream zu arbeiten der schon am dateiende angekommen ist.
-
supi, danke funktioniert nun, hab dann noch nen #include <string> gemacht und alles haut hin
hab ab dem nu ziemlich alles dann selbst herausgefunden steh aber nun vor nem problem wobei ich das problem aber nicht sehe
void main(void) { ifstream f( "C:\\Users\\Christoph\\Documents\\Namen.txt" ); string s; getline( f, s ); cout<<s<<endl; //getline(f,s); //cout<<s<<endl; cout<<h(konvert(s))<<endl; f.close(); system("Pause"); } int konvert(string name) { std::stringstream sstr(name); int Zahl; sstr >> Zahl; return Zahl; };und als fehler:
Fehler 1 error C2664: 'konvert': Konvertierung des Parameters 1 [b]von 'std::string' in 'std::string *[/b]' nicht möglich c:\Users\Christoph\Documents\Visual Studio 2005\Projects\hash-ADAT\hash-ADAT\hash.cpp 24den fehler überblick ich überhaupt nicht
hoffe mir kann wer helfen
danke

-
std::stringstream sstr(name);den konstruktor gibt es nicht->
std::stringstream ss; ss << name; int r; ss >> r; return r;btw: such mal nach "call by value" bzw "call by reference"... strings übergibt man üblicherweise nicht by value ;o)
bb