Wiederliche Fehler mit iomanip



  • Moin,
    ich bekomme bei folgenedem Code, Fehler (mit Vc++ auf WindoofXP), die angeblich in iomanip aus der Standardbibliothek stecken, wie z.B. fehlende Strichpunkte etc.

    #include "blackbox.h"
    
    #include <ctime>
    #include <iomanip>
    
    using namespace std;
    
    const std::string Blackbox::m_filename("logger.txt"); 
    
    void Blackbox::writeCurrentTime(std::fstream& thefile)
    {
       time_t long_time;
       time(&long_time);
    
       tm* newtime;
       newtime = localtime(&long_time);
    
       if (thefile.is_open())
       {
          thefile << setfill('0') << setw(2)
                  << newtime->tm_mday << "." 
                  << setfill('0') << setw(2)
                  << newtime->tm_mon + 1 << "."
                  << setfill('0') << setw(4)
                  << newtime->tm_year + 1900 << " - "
                  << setfill('0') << setw(2)
                  << newtime->tm_hour << ":"
                  << setfill('0') << setw(2)
                  << newtime->tm_min << ":"
                  << setfill('0') << setw(2)
                  << newtime->tm_sec << "  ";
       }
    }
    

    Es treten folgende Fehler (in iomanip) auf:

    error C2143: Syntaxfehler : Fehlendes ';' vor '<'
    error C2433: 'basic_istream' : 'inline' bei der Deklaration von Daten nicht zulaessig
    error C2501: 'basic_istream' : Fehlende Speicherklasse oder Typbezeichner
    error C2059: Syntaxfehler : ';'
    error C2059: Syntaxfehler : '<'
    error C2065: '_E' : nichtdeklarierter Bezeichner
    error C2143: Syntaxfehler : Fehlendes ';' vor '{'
    error C2447: Funktionskopf fehlt - Parameterliste im alten Stil?
    error C2954: Vorlagendefinitionen koennen nicht verschachtelt werden
    error C2629: 'struct logging::std::_Smanip<_Tm> (' unerwartet
    Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'logging::std::_Smanip<_Tm>'
    error C2334: Unerwartete(s) Token vor ':'; sichtbarer Funktionsrumpf wird übersprungen
    Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'logging::std::_Smanip<_Tm>'
    error C2629: 'void (' unerwartet
    Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'logging::std::_Smanip<_Tm>'
    error C2238: Unerwartete(s) Token vor ';'
    Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'logging::std::_Smanip<_Tm>'
    Syntaxfehler : Fehlendes ';' vor '<'
    error C2433: 'basic_istream' : 'inline' bei der Deklaration von Daten nicht zulaessig
    error C2501: 'basic_istream' : Fehlende Speicherklasse oder Typbezeichner
    error C2086: 'basic_istream' : Neudefinition
    error C2059: Syntaxfehler : ';'
    error C2059: Syntaxfehler : '<'
    error C2065: '_Tm' : nichtdeklarierter Bezeichner
    error C2143: Syntaxfehler : Fehlendes ';' vor '{'
    error C2447: Funktionskopf fehlt - Parameterliste im alten Stil?
    cerror C2653: 'ios_base' : Keine Klasse oder Namespace
    error C2065: 'fmtflags' : nichtdeklarierter Bezeichner
    error C2653: 'ios_base' : Keine Klasse oder Namespace
    warning C4229: Anachronismus verwendet : Modifizierer der Daten werden ignoriert
    error C2514: 'logging::std::_Smanip' : Klasse besitzt keine Konstruktoren
    Siehe Deklaration von '_Smanip'
    error C2262: 'resetiosflags' : Zerstoerung nicht moeglich
    error C2653: 'ios_base' : Keine Klasse oder Namespace
    error C2653: 'ios_base' : Keine Klasse oder Namespace
    warning C4229: Anachronismus verwendet : Modifizierer der Daten werden ignoriert
    error C2514: 'logging::std::_Smanip' : Klasse besitzt keine Konstruktoren
    Siehe Deklaration von '_Smanip'
    error C2262: 'setiosflags' : Zerstoerung nicht moeglich
    error C2065: 'streamsize' : nichtdeklarierter Bezeichner
    warning C4229: Anachronismus verwendet : Modifizierer der Daten werden ignoriert
    error C2514: 'logging::std::_Smanip' : Klasse besitzt keine Konstruktoren
    Siehe Deklaration von '_Smanip'
    error C2262: 'setprecision' : Zerstoerung nicht moeglich
    warning C4229: Anachronismus verwendet : Modifizierer der Daten werden ignoriert
    error C2514: 'logging::std::_Smanip' : Klasse besitzt keine Konstruktoren
    Siehe Deklaration von '_Smanip'
    error C2262: 'setw' : Zerstoerung nicht moeglich

    😃 😃 😃

    Kann mir da jemand helfen

    thx
    Glamdring



  • Hat nix mit iomanip zu schaffen. Unten stehendes Programm schreibt Datum/Zeit in die Datei:

    //#include "blackbox.h" 
    
    #include <ctime> 
    #include <iomanip> 
    #include <fstream>
    using namespace std; 
    
    namespace Blackbox
    { 
       const string m_filename( "logger.txt" );  
    
       void writeCurrentTime( ofstream & thefile ) 
       { 
           time_t long_time; 
           time(&long_time); 
           tm* newtime; 
           newtime = localtime(&long_time); 
    
           if( thefile ) 
           { 
              thefile << setfill('0') << setw(2) 
                      << newtime->tm_mday << "."  
                      << setfill('0') << setw(2) 
                      << newtime->tm_mon + 1 << "." 
                      << setfill('0') << setw(4) 
                      << newtime->tm_year + 1900 << " - " 
                      << setfill('0') << setw(2) 
                      << newtime->tm_hour << ":" 
                      << setfill('0') << setw(2) 
                      << newtime->tm_min << ":" 
                      << setfill('0') << setw(2) 
                      << newtime->tm_sec << "  "; 
           } 
       }
    }
    
    int main()
    {
      using namespace Blackbox; 
      ofstream file( m_filename.c_str() ); 
      writeCurrentTime( file ); 
    }
    


  • 🙄 Jetzt fällts mir auch auf 😃 , nur wie kann man das ändern? Neues iomanip?

    mfg
    Glamdring



  • Das von E.H. gepostete Prog, läuft das bei Dir? Dann gehe davon aus.



  • Nee, läuft nicht Fehler:
    error C1010: Unerwartetes Dateiende waehrend der Suche nach der Direktive fuer die vorkompilierte Header-Datei

    thx
    Glamdring



  • Glamdrink schrieb:

    Nee, läuft nicht Fehler:
    error C1010: Unerwartetes Dateiende waehrend der Suche nach der Direktive fuer die vorkompilierte Header-Datei

    Was natürlich nichts mit dem Code an sich zu tun hat. Wie wäre es, wenn du vorkompilierte Header entweder richtig (Stichwort: stdafx.h) oder gar nicht verwenden würdest?



  • War nur ein versehen, weil ich bei Konsolenanwendung (mit VC++) auf Hello-World anwendung geklickt habe, ivch weiss nicht mal wozu man sowas braucht 😃

    mfg
    Glamdring



  • Jetzt läufts auch, -> neues iomanip, wenn ich das richtig verstanden hab

    thx
    Glamdring


Anmelden zum Antworten