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 willstsize_t begin = zeile.find("From: ") + ("From: ").length() + 1;
Dann zeigt begin auf 'F' von "Fritz".
Kurt