Ofstream / ifstream



  • HI,

    ich habe folhendes Programm Geschrieben:

    #include <iostream>
    #include <string>
    #include <fstream>
    using namespace std;
    
    int main()
    {
            string ip;			//Hier wird die IP gespeichert
            string host[30];	//Hier wird der Inhalt der /etc/hosts Date gespeichert
            string gesamt;
            string iploc="/root/ip/ip.txt";  //Pfad zur Datei mit der IP
            string hostloc="/etc/hosts";	//Pfad zu Hosts Datei
    
    //-----------------------------------------------
    
            ifstream ausgabe(iploc.c_str(),ios::in); //Öffnet die ip.txt
            getline(ausgabe,ip);					 //Liest die erste Zeile aus ip.txt ein
            ip.erase( 0, 24 );						 //Löscht die Zeichen vor der IP
            int loc = ip.find(")",0);                //und
            ip.erase(loc,100);						 //nach der IP
    
            ausgabe.close();						 //Schliesst die Datei wieder
    
    //-----------------------------------------------
    
           ifstream aus_host(hostloc.c_str(),ios::in);
    
            for(int i=0;i!=30;i++)
            {
                   getline(aus_host,host[i]);
            }
    
            aus_host.close();
    
    //-----------------------------------------------
    
            int loc_host = host[9].find("loc",0);
            host[9].erase( 0, loc_host-1 );
            gesamt=ip + " localhost server";
            host[9].replace( 0, 30,gesamt);
    
    //-----------------------------------------------
    
            ofstream ein_host(hostloc);
            ein_host.seekp(ios::beg);
    
            for(int i=0;i!=30;i++)
            {
                    ein_host<<host[i]<<endl;
            }
    
            ein_host.close();
    
    }
    

    Nur wenn ich es dann mit gcc auf meinem Linuxrechner kompiliere spuckt der folgende meldung aus:

    ip.cpp: In function int main()': ip.cpp:45: error: no matching function for call tostd::basic_ofstream<char,
    std::char_traits<char> >::basic_ofstream(std::string&)'
    /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/include/g++-v3/iosfwd:92: error: candidates
    are: std::basic_ofstream<char, std::char_traits<char>

    ::basic_ofstream(const std::basic_ofstream<char, std::char_traits<char> >&)
    /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/include/g++-v3/fstream:644: error:
    std::basic_ofstream<_CharT, _Traits>::basic_ofstream(const
    char*, std::_Ios_Openmode) [with _CharT = char, _Traits =
    std::char_traits<char>]
    /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/include/g++-v3/fstream:627: error:
    std::basic_ofstream<_CharT, _Traits>::basic_ofstream() [with
    _CharT = char, _Traits = std::char_traits<char>]

    ich habe schon rumprobiert aber es wird höchstens schlimmer.
    Kann vielleicht mal einer von euch kucken oder er den Fehler findet?

    MFG Kollode



  • Hi,

    ändere Zeile 45 mal wie folgt:

    ofstream ein_host(hostloc.c_str());
    


  • Hatte ich auch schon macht es in meinen Augen nur noch schlimmer.

    Das kommt dabei raus.

    /tmp/cc0LfIf8.o(.text+0x1b): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string[in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x54): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string[in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x7c): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string[in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x8a): In function main': : undefined reference tostd::allocator<char>::allocator[in-charge]()'
    /tmp/cc0LfIf8.o(.text+0xaa): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string[in-charge](char const*, std::allocator<char> const&)'
    /tmp/cc0LfIf8.o(.text+0xc6): In function main': : undefined reference tostd::allocator<char>::~allocator [in-charge]()'
    /tmp/cc0LfIf8.o(.text+0xdf): In function main': : undefined reference tostd::allocator<char>::~allocator [in-charge]()'
    /tmp/cc0LfIf8.o(.text+0xed): In function main': : undefined reference tostd::allocator<char>::allocator[in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x10d): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string[in-charge](char const*, std::allocator<char> const&)'
    /tmp/cc0LfIf8.o(.text+0x129): In function main': : undefined reference tostd::allocator<char>::~allocator [in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x142): In function main': : undefined reference tostd::allocator<char>::~allocator [in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x150): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::c_str() const'
    /tmp/cc0LfIf8.o(.text+0x16a): In function main': : undefined reference tostd::basic_ifstream<char, std::char_traits<char> >::basic_ifstream[in-charge](char const*, std::_Ios_Openmode)'
    /tmp/cc0LfIf8.o(.text+0x17f): In function main': : undefined reference tostd::basic_istream<char, std::char_traits<char> >& std::getline<char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
    /tmp/cc0LfIf8.o(.text+0x19a): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::erase(unsigned, unsigned)'
    /tmp/cc0LfIf8.o(.text+0x1b5): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::find(char const*, unsigned) const'
    /tmp/cc0LfIf8.o(.text+0x1d8): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::erase(unsigned, unsigned)'
    /tmp/cc0LfIf8.o(.text+0x1e6): In function main': : undefined reference tostd::basic_ifstream<char, std::char_traits<char> >::close()'
    /tmp/cc0LfIf8.o(.text+0x1f4): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::c_str() const'
    /tmp/cc0LfIf8.o(.text+0x20e): In function main': : undefined reference tostd::basic_ifstream<char, std::char_traits<char> >::basic_ifstream[in-charge](char const*, std::_Ios_Openmode)'
    /tmp/cc0LfIf8.o(.text+0x247): In function main': : undefined reference tostd::basic_istream<char, std::char_traits<char> >& std::getline<char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
    /tmp/cc0LfIf8.o(.text+0x25f): In function main': : undefined reference tostd::basic_ifstream<char, std::char_traits<char> >::close()'
    /tmp/cc0LfIf8.o(.text+0x280): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::find(char const*, unsigned) const'
    /tmp/cc0LfIf8.o(.text+0x2aa): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::erase(unsigned, unsigned)'
    /tmp/cc0LfIf8.o(.text+0x2e2): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
    /tmp/cc0LfIf8.o(.text+0x2fe): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string [in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x317): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string [in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x342): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::replace(unsigned, unsigned, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
    /tmp/cc0LfIf8.o(.text+0x36a): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::c_str() const'
    /tmp/cc0LfIf8.o(.text+0x386): In function main': : undefined reference tostd::basic_ofstream<char, std::char_traits<char> >::basic_ofstream[in-charge](char const*, std::_Ios_Openmode)'
    /tmp/cc0LfIf8.o(.text+0x3da): In function main': : undefined reference tostd::basic_ostream<char, std::char_traits<char> >::seekp(std::fpos<__mbstate_t>)'
    /tmp/cc0LfIf8.o(.text+0x413): In function main': : undefined reference tostd::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
    /tmp/cc0LfIf8.o(.text+0x41b): In function main': : undefined reference tostd::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
    /tmp/cc0LfIf8.o(.text+0x423): In function main': : undefined reference tostd::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& ()(std::basic_ostream<char, std::char_traits<char> >&))'
    /tmp/cc0LfIf8.o(.text+0x43b): In function main': : undefined reference tostd::basic_ofstream<char, std::char_traits<char> >::close()'
    /tmp/cc0LfIf8.o(.text+0x457): In function main': : undefined reference tostd::basic_ofstream<char, std::char_traits<char> >::~basic_ofstream [in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x46d): In function main': : undefined reference tostd::basic_ofstream<char, std::char_traits<char> >::~basic_ofstream [in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x489): In function main': : undefined reference tostd::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream [in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x49f): In function main': : undefined reference tostd::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream [in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x4bb): In function main': : undefined reference tostd::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream [in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x4d1): In function main': : undefined reference tostd::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream [in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x4ed): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string [in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x503): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string [in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x519): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string [in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x52f): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string [in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x545): In function main': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string [in-charge]()'
    /tmp/cc0LfIf8.o(.text+0x55b): more undefined references to std::basic\_string<char, std::char\_traits<char>, std::allocator<char> >::~basic_string [in-charge]()' follow /tmp/cc0LfIf8.o(.text+0x65b): In function__static_initialization_and_destruction_0(int, int)':
    : undefined reference to std::ios_base::Init::Init[in-charge]()' /tmp/cc0LfIf8.o(.text+0x68c): In function__tcf_0':
    : undefined reference to std::ios_base::Init::~Init [in-charge]()' /tmp/cc0LfIf8.o(.gnu.linkonce.t.\_ZStplIcSt11char\_traitsIcESaIcEESbIT\_T0\_T1\_ERKS6\_PKS3_+0x15): In functionstd::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const
    )':
    : undefined reference to std::basic\_string<char, std::char\_traits<char>, std::allocator<char> >::basic\_string[in-charge](std::basic\_string<char, std::char_traits<char>, std::allocator<char> > const&)' /tmp/cc0LfIf8.o(.gnu.linkonce.t.\_ZStplIcSt11char\_traitsIcESaIcEESbIT\_T0\_T1\_ERKS6\_PKS3_+0x27): In functionstd::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)':
    : undefined reference to std::basic\_string<char, std::char\_traits<char>, std::allocator<char> >::append(char const*)' /tmp/cc0LfIf8.o(.gnu.linkonce.t.\_ZStplIcSt11char\_traitsIcESaIcEESbIT\_T0\_T1\_ERKS6\_PKS3_+0x3a): In functionstd::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)':
    : undefined reference to std::basic\_string<char, std::char\_traits<char>, std::allocator<char> >::~basic_string [in-charge]()' /tmp/cc0LfIf8.o(.eh\_frame+0x12): undefined reference to__gxx_personality_v0'
    collect2: ld returned 1 exit status



  • Also bei mir wird dein geposteter Quelltext (mit der besagten Änderzung von CarstenJ) fehlerfrei compiliert. (Compiliert mit g++.exe und Borland C++ 5.0.x)
    Welchen Compiler verwendest du denn?

    Caipi



  • Vergisst am besten das ich hier war...

    Als ich Caipi´s antwort gelesen habe wurde mir klar wodran es lag ...
    Ich habe auf dem Linux system immer gcc statt g++ ausgeführt ....

    schande über mich ..

    MFG Kollode


Anmelden zum Antworten