string auslesen von bis



  • macht er bei meinem code auch!



  • noch ein Problem

    wenn ich in einem email mehrere srings mit "Subject:" habe wie unten angegeben..wie sage ich im dass er nur das erste subject nehmen soll?

    Subject: Erreichbarkeit aus Österreich/ DomainOnly Lite für .at/ günstigere Domainpreise
    Date: Mon, 11 Jul 2005 14:20:38 +0200
    MIME-Version: 1.0
    Content-type: text/plain; charset=iso-8859-1
    X-Virus-Scanned: amavisd-new at arcor.de
    X-Amavis-Alert: BAD HEADER Non-encoded 8-bit data (char D6 hex) in message header 'Subject': Subject: Erreichbarkeit aus \326sterreich/ Doma...

    das problem ist ja...das er bei der nächsten email das subject wieder asugeben soll..eben nur das erste in der aktuellen



  • hab das jetzt so

    #include <fstream> // zur Dateibearbeitung 
    #include <string>
    #include <iostream> 
    #include <iomanip>
    
    using namespace std; 
    
    int main() 
    { 
    string zeile ; 
    string dateiname, from, date, subject;
    int length=0,end=0, begin=0, zaehler=0, doppeltf,doppelts,doppeltd;
    
    cout<< "Geben Sie den gewuenschten Dateinamen bzw. Emailfolder ein >>" << endl <<endl;
    cin>> dateiname;
    cout<< endl;
    
     ifstream datei(dateiname.c_str());
    
     if (!datei)
    	 cout << "Fehler beim öffnen der Datei" << endl; 
    
     while(getline(datei,zeile)) //Zeilenweise auslesen
     {
    	 if (zeile.find("X-Account-Key")!=string::npos){    // Wort enthalten
    		 doppeltf=0,doppelts=0,doppeltd=0;
    
    	 if (zeile.find("From: ")!=string::npos)     // Wort enthalten
    	 { 
    			size_t begin = zeile.find_first_not_of("From: "); 
    			size_t end = zeile.find_last_of('\"'); 
    			size_t length = end - begin; 
    			from = zeile.substr(begin,length);
    			if(doppeltf==0){
    			cout <<setw(10)<<left<<"Absender:"<< from << endl;
    			doppeltf=1;}
    	 }
    
    	if (zeile.find("Subject:")!=string::npos)     // Wort enthalten		 { 
    			 size_t begin = zeile.find_first_not_of("Subject:");
    			 size_t end = zeile.find_last_of('\"'); 
    		     size_t length = end - begin; 
    			 subject = zeile.substr(begin,length);
    			 if(doppelts==0){
    			 cout <<setw(10)<<left<<"Betreff:"<< subject << endl;
    			 doppelts=1;}
    			 }
    
    	 if (zeile.find("Date:")!=string::npos)		// Wort enthalten
    			{
    				size_t begin = zeile.find_first_not_of("Date:")+6;
    				size_t end = zeile.find_last_of(":"); 
    				size_t length = end - begin; 
    				date = zeile.substr(begin,length);
    				if(doppeltd==0){
    				cout <<setw(10)<<left<<"Datum:"<< date << endl<<endl;
    				doppeltd=1;}
    				zaehler++;
    
    	 }
    
    	}
     }
    
     cout << endl;
     cout<< "Anzahl der Emails: " << zaehler <<endl;
    
     if (!datei.eof()) return 2; //Fehler beim Lesen der Datei, bin noch nicht am Ende der Datei!
    
     return 0;  //erwartetes Ende
    
     }
    

    aber irgendwie macht er diese zeile

    if (zeile.find("Return-Path:")!=string::npos){
    doppeltf=0,doppelts=0,doppeltd=0;

    gar nicht..so dass er gar nicht weiter reinspringt...hilfe



  • bitte verwende codetags, damit dies übersichtlicher wird!



  • mit code tags



  • uzo schrieb:

    mit code tags

    mach mal c++ code tags, also statt code in die eckigen klammern ein cpp schreiben!



  • jetzt
    "X-Account-Key" steht am enfang jeder email
    er geht aber nicht mehr weiter rein obwohl die if (X-Account-Key) frahe erfüllt ist



  • ich hab des niemals fragt 😃 ..war echt ne dumme frage..hat sich erledigt



  • Ich glaube du hast noch immer nicht verstanden wie find_first_not_of() funktioniert.
    Beispiel :
    zeile = "From : Fritz@nowhere.com"

    size_t begin = zeile.find_first_not_of("From: ");
    

    dann zeigt begin auf das zeichen 'i' von "Fritz" denn i ist das erste Zeichen in zeile in dem kein zeichen aus dem string "From: " enthalten ist.
    Glaube nicht dass du das willst.
    Glaube eher du willst

    size_t begin = zeile.find("From: ") + ("From: ").length() + 1;
    

    Dann zeigt begin auf 'F' von "Fritz".
    Kurt


Anmelden zum Antworten