ifstream und MSVC++2005



  • Hi !

    Wieso will dieses kleine Teilprogramm unter MSVC++2005 nicht kompilieren?? Jeder andere Compiler schluckt das ohne zu meckern .....

    #include <fstream>
    //...
    
    int _tmain(int argc, _TCHAR* argv[])
    {
       std::string filename ;
       // ...
    
       ifstream f (filename.c_str(), ios::binary) ;
    
    }
    

    Das Compilen liefert folgenden 2 Probleme:

    error C2079: 'f' uses undefined class 'std::basic_ifstream<_Elem,_Traits>'	
    
    error C2078: too many initializers
    

    jeder andere Compiler kommt mit dem obigen ohne probleme klar.
    Ich weiss zwar dass der Fehler Nr1 eigentlich der eigentliche prototyp der klasse ifstream nämlich basic_ifstream ist ... Nur werden ifstreams in programmen nicht immer so verwendet wie ich es habe?

    bin für jeden vorschlag dankbar,
    cya Prophecy



  • Jo .. du weißt wo der Fehler liegt ... bist nen Held ^^

    #include <string>
    

    fehlt.

    =>

    #include <fstream>
    #include <string>
    
    int main()
    {
       std::cout << "Filename: " << std::flush;
       std::string string_filename;
       std::getline(std::cin, string_filename);
       std::ifstream file_stream(string_filename.c_str(), std::ios::in | std::ios::binary);
       if (!file_stream)
           return -1;
    
       file_stream.close();
       return 0;
    }
    


  • ähm, ne das hats nicht besser gemacht 😃
    Die beiden fehler sind immer noch dieselben wie vorhin ^^

    Edit: das std:: bei filestream, ios usw habe ich vergessen, im code stehts schon ... 😃



  • tjo dann ist der Fehler an ner anderen Stelle ... der Code ist so korrekt (wie ich ign gepostet habe!) ...



  • (D)Evil schrieb:

    tjo dann ist der Fehler an ner anderen Stelle ... der Code ist so korrekt (wie ich ign gepostet habe!) ...

    Nein, du hast iostream vergessen 🤡

    #include <fstream>
    #include <string>
    #include <iostream>
    
    int main()
    {
       std::cout << "Filename: " << std::flush;
       std::string string_filename;
       std::getline(std::cin, string_filename);
       std::ifstream file_stream(string_filename.c_str(), std::ios::in | std::ios::binary);
       if (!file_stream)
           return -1;
    
       file_stream.close();
       return 0;
    }
    

    Läuft unter Microsoft Visual Studio 2005 Standard Edition...



  • selbst, wenn ich nur das da laufen lasse, bekomm ich dieselben fehler

    #include "stdafx.h"
    #include <fstream>
    #include <string>
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	std::ifstream f ("lol.txt", std::ios::binary) ;
    	return 0 ;
    }
    

    die "stdafx.h" ist die std-gefertigte von MSVC++ die ich nicht editiert habe (bislang zumindest)



  • Oh stimmt ... hatte es nicht Compiliert ^^



  • Prophecy666 schrieb:

    selbst, wenn ich nur das da laufen lasse, bekomm ich dieselben fehler

    #include "stdafx.h"
    #include <fstream>
    #include <string>
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	std::ifstream f ("lol.txt", std::ios::binary) ;
    	return 0 ;
    }
    

    die "stdafx.h" ist die std-gefertigte von MSVC++ die ich nicht editiert habe (bislang zumindest)

    //#include "stdafx.h" // Hab ich NIE gebraucht. Ich mache immer leeres Projekt erstellen ;)
    #include <fstream>
    #include <string>
    #include <tchar.h> // <----------------------------
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        std::ifstream f ("lol.txt", std::ios::binary) ;
        return 0 ;
    }
    


  • omg ... ein leeres projekt zu erstellen hat den fehler tatsächlich behoben 🙂
    Vielen dank 😃


Anmelden zum Antworten