Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Content-Length aus String extrahieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
13.04.2004, 20:57 Uhr
Holger1976



Hi, ich benutze momentan folgenden Code um den Content-length aus einem Http Request rauszulesen. Allerdings kommt dir das setzen eines manuellen punktes a la ° etwas unprofessionell vor. :o)
Kann mir jemand sagen, wie man folgenden Code etwas vereinfachen kann?


C++:
    char * Pointer;
    
    Pointer = strstr(Buffer,"Content-length:");
    *Pointer = '°';
    Zwischenspeicher = strtok(Buffer,"°" );
    Zwischenspeicher = strtok(0," " );
    pSizeOfFile = strtok(0,"\n" );
    cout << "Dateigrösse: "<< pSizeOfFile << "\n"



Gruß,
Holger
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.04.2004, 07:40 Uhr
Pablo
Supertux
(Operator)



C++:
char* tmp;
tmp=strstr(buffer, "Content-length:");
if (!tmp) ... // Content-length: nicht gefunden
tmp+=strlen("Content-length:");



Ich würde so machen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.04.2004, 18:26 Uhr
Holger1976



Ja, das klappt eigentlich ganz gut so.
Das Problem ist nur, wenn ich das ganze folgendermaßen ausgebe:

cout << "Dateigrösse: "<< tmp << "\n";

das mit dann der ganze Rest vom Buffer auch mit ausgeben wird und nicht zu bis zum Ende der Dateigrösse.
Ciao,
Holger
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.04.2004, 18:31 Uhr
Pablo
Supertux
(Operator)


Im welchen Format leigt die Dateigröße nach Content-length: an?

Benutze int sscanf(const char *str, const char *format, ...);


C++:
char* tmp;
int x;
tmp=strstr(buffer, "Content-length:");
if (!tmp) ... // Content-length: nicht gefunden
tmp+=strlen("Content-length:");
sscanf(tmp, "%d", &x);
printf("Die Dateigröße ist %d\n", x);


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.04.2004, 22:51 Uhr
Holger1976



Also ich lese die Zeichen in einen char Buffer ein.
Auf jedenfall kommt nur komisches zeugs raus oder das prog stürzt ab, wenn ich sscanf benutze.
Ciao,
Holger
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
14.04.2004, 23:01 Uhr
Holger1976



Ah jetzt hats geklappt!
Die sscanf Anweisung ist wirklich nicht ohne.
Also vielen Dank für deine Hilfe. Du wirst in den Credits auftauchen, falls mein Downloadmanager jemals fertig werden sollte. *g*
Ciao,
Holger
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
15.04.2004, 07:36 Uhr
Pablo
Supertux
(Operator)



Zitat:

Die sscanf Anweisung ist wirklich nicht ohne.



ohne was?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
15.04.2004, 10:25 Uhr
typecast
aka loddab
(Operator)


@Pablo:
Wenn man sagt "etwas ist nicht ohne", dann meint man damit, dass dieses etwas sehr hilfreich ist oder das etwas einiges kann...

@Holger1976: Du schreibst doch ein C++-Programm. Hast du dir mal überlegt, die Klasse std::string zu benutzten?
Mit ihr vereinfacht sich die arbeit mit Strings erheblich.

Und dann noch was: Statt

C++:
std::cout << "blabla" << "\n";



kannst du auch


C++:
std::cout << "blabla" << std::endl;



schreiben. Sieht imho einfach besser aus, ist aber Geschmacksache
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
15.04.2004, 12:50 Uhr
~Holger1976
Gast


Ich benutze eingentlich immer cout oder cin wann immer es geht. Einfach weil es schicker aussieht als ein printf. :o)
Allerdings hab ich damit schon so einige Probleme gehabt. So musste ich zum Beispiel anstatt mit << in alter C Manier in die Datei schreiben, weil mit << einfach die Daten geschluckt wurden. Naja egal, Hauptsache es geht jetzt.
Ich wüsste jetzt auch kein Stream Äpuivalent (schreibt man das so? *g*) zu sscanf. Leider bin ich in dem Thema auch noch nicht so bewandert, was leider auch daran liegt da es kaum gute C-Bücher gibt.
Mit gut mein ich, das es einfach mal ein Buch geben würde mit allen Befehlen und funktionen von A-Z. Klingt einfach, dennoch hab ich dies im Buchladen einfach noch nicht gefunden.
Zwar gibt es eine C++ Referenz von Markt und Technik,aber da kann man das Inhaltsverzeichnis zum suchen vergessen.
Kennt ihr eine gute und vor allem einigermaßen Komplette C++ Referenz? Am besten natürlich in Deutsch.
Ciao,
Holger
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
15.04.2004, 17:10 Uhr
Pablo
Supertux
(Operator)


Ich verstehe immer noch nicht, das mit dem "Die Printf-Anweisung ohne", ist ja egal.


Zitat:

Einfach weil es schicker aussieht als ein printf.



Das schöne an printf ist die Formatierungsmögichkeiten, man kann wirklich nur eine einzige Zeile schreiben und viele Variablen gleichzeitig ausgeben. Mit std::cout ist aber ein Problem


C++:
std::cout << "a=" << a << " b=" << b << ... << std::endl;



Ich finde das viel umständlicher als

C++:
printf("a=%d b=%d ...\n",a,b,c,...);



Ich weiß es nicht mir, wo ich gelesen habe, dass wenn man std::endl benutzt, wird der stdout geflusht oder so, deshalb sollte man std::endl statt "\n" benutzen. Wie gesagt, es ist schon lange her, ich weiß es wirklich nicht mehr, ob das stimmt.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: