Problem mit dem schreiben von doubles

tors

Grünschnabel
C++:
#include <iostream>
#include <istream> 
#include <fstream> 
#include <limits>  
#include <string>
#include <vector>


struct MD  // string für datum und doubles für  die werte in zahlen
{ 
    std::string datum; 
    double hours_worked; 
    double filescreated; 
};

namespace 
{ 
    const std::streamsize ALL = std::numeric_limits< std::streamsize >::max(); 
}; 
// filter :P
std::istream& operator>>( std::istream& in, MD& md ) 
{ 
    in.ignore( ALL, '[' ) >> md.datum; 
    std::string token; 
    if( getline( in.ignore( ALL, '|' ), token, '=' ) ) 
    { 
        md.hours_worked = 0.;  
        md.filescreated = 0.; 
        if( token == "hours_worked" ) 
            in >> md.hours_worked; 
        else if( token == "filescreated" ) 
            in >> md.filescreated; 
        else 
            in.setstate( std::ios_base::failbit ); 
    } 
    return in; 
}
struct Komma : public std::numpunct< char > 
{ 
protected: 
    virtual char_type do_decimal_point() const 
    { 
        return ','; 
    } 
};

int main() 
{ 
    using namespace std; 
    ifstream fin ("C:/valueextractor/valueextractor/testfolder/days/2012-10-03.md") ; 
   fin.imbue( locale( fin.getloc(), new Komma ) );
    if( !fin.is_open() ) 
    { 
        cerr << "Fehler beim Oeffnen der Datei" << endl; 
        
        return -2; 
    } 
    

	
	
	

	 

	//stream öffnen
          ofstream myFile;  
       myFile.open ("C:/valueextractor/extractor.csv");

	   
   
   MD md;
   while (  fin >> md ) 

   {  
           // md's   auswerten
           cout << "Datum        |Stunden gearbeitet | Dateien erstellt " << endl ;
           cout << md.datum << "|          " << md.hours_worked << "                |          " << md.filescreated << endl ;    
         
        
		   //stream schreiben
		   if (myFile)
   
     
          myFile << "Datum        |   Stunden gearbeitet | Dateien erstellt " << endl;
          myFile << md.datum << "|          " << md.hours_worked << "     |             " << md.filescreated << endl ; 
           

		  //MD'D summieren  

    } 
       
       
  
       
		   
		  
       // stream schließen  
       myFile.close();
      
	// new doubles   
       string  mdd1 (md.datum) ;
	      double  mdf1  ( md.filescreated ) ;
	      double    mdh1 (md.hours_worked  );
	   
	  
		

	   if( fin.eof() ) 
    { 
      
       } 

//------------------------------------------2222222222222222222222222222222222------------------------------------------------------------

	   ifstream fin1 ("C:/valueextractor/valueextractor/testfolder/days/2012-10-04.md") ; 
   fin1.imbue( locale( fin1.getloc(), new Komma ) );
    if( !fin1.is_open() ) 
    { 
        cerr << "Fehler beim Oeffnen der Datei" << endl; 

        
        return -2; 
    } 
    


	


	 

	//stream öffnen
            
       myFile.open ("C:/valueextractor/extractor.csv", std::ios::app);
   
   
   while (  fin1 >> md ) 

   {  
           // md's   auswerten
           cout << "Datum        |Stunden gearbeitet | Dateien erstellt " << endl ;
           cout << md.datum << "|          " << md.hours_worked << "                |          " << md.filescreated << endl ;    
         
        
		   //stream schreiben
		   if (myFile)
   
     
          myFile << "Datum        |   Stunden gearbeitet | Dateien erstellt " << endl;
          myFile << md.datum << "|          " << md.hours_worked << "     |             " << md.filescreated << endl ; 
             
		  //MD'D summieren  

    } 
       
       
  
       
		   
		  
       // stream schließen  
       myFile.close();
      //new doubles
      string  mdd2 (md.datum) ;
	  double mdf2 (md.filescreated ) ;
	   double mdh2  (md.hours_worked);
         
		

	   if( fin1.eof() ) 
    { 
      
       }
//-----------------------------------------------3333333333333333333333333333333333333333---------------------------------------------
	   ifstream fin11 ("C:/valueextractor/valueextractor/testfolder/meetings/MeetingForWikiDown1.md") ; 
   fin11.imbue( locale( fin11.getloc(), new Komma ) );
    if( !fin11.is_open() ) 
    { 
        cerr << "Fehler beim Oeffnen der Datei" << endl; 
        
        return -2; 
    } 
    

	


	 

	//stream öffnen
            
       myFile.open ("C:/valueextractor/extractor.csv", std::ios::app);
   
   
   while (  fin11 >> md ) 

   {  
           // md's   auswerten
           cout << "Datum        |Stunden gearbeitet | Dateien erstellt " << endl ;
           cout << md.datum << "|          " << md.hours_worked << "                |          " << md.filescreated << endl ;    
         
        
		   //stream schreiben
		   if (myFile)
   
     
          myFile << "Datum        |   Stunden gearbeitet | Dateien erstellt " << endl;
          myFile << md.datum << "|          " << md.hours_worked << "     |             " << md.filescreated << endl ; 

		  
             
		  //MD'D summieren  

    } 
       
       
  
       
		   
		  
       // stream schließen  
       myFile.close();
      
      // new doubles
         string  mdd3 (md.datum) ;
	   double mdf3 (md.filescreated) ;
	   double mdh3 (md.hours_worked);
		

	   if( fin11.eof() ) 
    { 
      
       }
//-------------------------------------------------4444444444444444444444444444444444444-------------------------------------------------
	   ifstream fin111 ("C:/valueextractor/valueextractor/testfolder/meetings/MeetingForWikiDown2.md") ; 
   fin111.imbue( locale( fin111.getloc(), new Komma ) );
    if( !fin111.is_open() ) 
    { 
        cerr << "Fehler beim Oeffnen der Datei" << endl; 
        
        return -2; 
    } 
    

	


	 

	//stream öffnen
            
       myFile.open ("C:/valueextractor/extractor.csv", std::ios::app);
   
   
   while (  fin111 >> md ) 

   {  
           // md's   auswerten
           cout << "Datum        |Stunden gearbeitet | Dateien erstellt " << endl ;
           cout << md.datum << "|          " << md.hours_worked << "                |          " << md.filescreated << endl ;    
         
        
		   //stream schreiben
		   if (myFile)
   
     
          myFile << "Datum        |   Stunden gearbeitet | Dateien erstellt " << endl;
          myFile << md.datum << "|          " << md.hours_worked << "     |             " << md.filescreated << endl ; 
		  
             
		  //MD'D summieren  

    } 
       
       
  
       
		   
		  
       // stream schließen  
       myFile.close();
      
      
         
		

	   if( fin111.eof() ) 
    { 
      
       }

//-------------------------------------------------ende---------------------------------------------------------------------------------

       myFile.open ("C:/valueextractor/extractor.csv");
	   if (myFile)
	   {
	   // new doubles
	   string  mdd4 (md.datum) ;
	   double mdf4 (md.filescreated) ;
	   double mdh4 (md.hours_worked);

	   cout  << endl << mdd1 << "  |  " << mdh1  << "  |  " << mdf1 << endl ; 
	   cout  << mdd2 << "  |  " <<  mdh2 + mdh3 + mdh4 << "  |  " <<  mdf2 + mdf3 + mdf4 << endl ; 

	   myFile << mdd1 << "  |  " << mdh1  << "  |  " << mdf1 << endl ; 
	   myFile  << mdd2 << "  |  " <<  mdh2 + mdh3 + mdh4 << "  |  " <<  mdf2 + mdf3 + mdf4 << endl ;
	  
}

	myFile.close();


    getchar () ;
    return 0; 
}


Guten Tag ich habe folgendes Problem ich habe im unteren abscgnicht dieses codes meine datei geöffnet und darin meine doubles addiert ... die doubles befinden sich dort wo ich mit // new double komentiert habe ... er macht auch alles toll und rechntet die werte die ich in die doubles geschrieben haben zusammen nur hab ich den fehler begangen die werte aus dem MD struckt objeckten ( md.filescreate und md.hours_worked) in die doubles zu schreiben die aber nur platz haben für einen double ... also er liest nicht alle zeilen raus ... was kann ich mit den doubles machen damit sie mehrere zeilen lesen ****
 
Zuletzt bearbeitet von einem Moderator:
und einfach 300 Zeilen Code zu posten, ohne in sauberem Stil zu sagen, worum es genau geht, ist nicht gerade förderlich.

Gruß
Peter
 
Zurück