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	25
    

    da 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	24
    

    den 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


Anmelden zum Antworten