Wo ist der Fehler?
-
FreakY<3Cpp schrieb:
Ich kotz gleich...
Hey! Ich hab ein ernstes Problem und da kann ich solche dummen Kommentare nicht gebrauchen!
Sorry an alle anderen, für die Unannehmlichkeiten.
-
MFK schrieb:
%x passt nicht zu BYTE.
Also erstmal nach int casten?
-
evtl stringstreams und hex benutzen - es sei denn du willst C programmieren (der code sieht sehr danach aus), dann bist du allerdings im falschen forum gelandet. Falls dem so ist sag bescheid, dann wird das thema verschoben
-
Nein, das soll C++ werden

Der Grund, warum ich die C-Funktionen nehme ist, dass Stringstreams Probleme mit BYTE-Werten haben. Diese interpretieren sie als char und das geht schief.
-
Blaze schrieb:
Der Grund, warum ich die C-Funktionen nehme ist, dass Stringstreams Probleme mit BYTE-Werten haben. Diese interpretieren sie als char und das geht schief.
Soll das ein Scherz sein? Schon mal was davon gehört, dass man einen Cast machen kann? Nur um einen statischen Cast zu vermeiden, wechselst du auf C Funktionen? Wo du dann sowieso auch einen Cast machen musst ...
BYTE val = 23; std::ostringstream oss; oss << std::hex << static_cast<int>(val);Grüssli
-
Gelöst!
Das Problem war, dass ich keinen Cast benutzt hatte. Jetzt caste ich über WORD und es klappt.Ja, ich könnte stringstreams anstelle von sprintf nutzen. Klar ist das C++iger.
Allerdings gefällt mir der Overhead, den die ss mit sich bringen nicht.Außerdem sind StringStreams nicht sehr performant.
Ich habe einen kleinen Bench gestartet, bei dem ein einfacher LexicalCast von int nach float durchgeführt wird.
Ergebnis: "StringStream benötigt 7.92326 mal so viel Zeit wie sprintf"Diese BinaryToText Conversion benötige ich, um Binärdaten in XML-Dateien unterzubringen. Da das eine ganze Menge Dateien mit einer ganzen Menge Daten sind und ich die Ladezeiten flach halten will, benutze ich lieber getestete und gesicherte C-Funktionen, bei denen nichts schiefgehen kann, anstelle von stringstreams.
Mir ist wichtig, dass meine Programme schnell sind, auch wenn mal die eine oder andere C-Funktion dabei ist.
Macht reines C++ denn wirklich jedes Programm gleich besser?
-
Blaze schrieb:
Ergebnis: "StringStream benötigt 7.92326 mal so viel Zeit wie sprintf"
Die üblichen Fragen...
Optimierungen an/Debug aus?
Wie entscheidend ist an der Stelle eine langsamere dafür sicherere Funktionsweise?
-
Blaze schrieb:
Das Problem war, dass ich keinen Cast benutzt hatte. Jetzt caste ich über WORD und es klappt.
Was ich auch gesagt habe, aber wieso WORD? Wenn schon DWORD oder gleich int.
Blaze schrieb:
Ja, ich könnte stringstreams anstelle von sprintf nutzen. Klar ist das C++iger.
Ehm, es geht hier nicht um C++iger, sondern um Typsicherheiten, Programmwartung, Fehlersicherheiten, usw. usf.
Blaze schrieb:
Außerdem sind StringStreams nicht sehr performant.
Ich habe einen kleinen Bench gestartet, bei dem ein einfacher LexicalCast von int nach float durchgeführt wird.
Ergebnis: "StringStream benötigt 7.92326 mal so viel Zeit wie sprintf"Nebst dem was l'abra d'or gesagt hat:
- Testcode zeigen.
- Wie hast du gemessen?
- In welchem Umfang beeinflusst dies den Rest des Programmes?Blaze schrieb:
..., benutze ich lieber getestete und gesicherte C-Funktionen, bei denen nichts schiefgehen kann, anstelle von stringstreams.
Bei dieser Aussage kann man nur noch mit Kopfschütteln und tausenden von Fragezeichen reagieren.
Was soll an den stringstreams nicht gestestet sein? was soll bei denen weniger sicher sein? Es ist ja eigentlich genau andersrum! Was soll bei den stringstreams schief gehen, was nicht auch bei den C Funktionen schief gehen kann? Wie kommst du auf so einen Blödsinn?Die Performance könnte ja noch stimmen, wobei ich schwer daran zweifle, dass es in diesem extremen Mass auftaucht. Und vor allem fragt man sich auch, ob es wirklich einen solch extremen Einfluss auf den Rest haben soll. Aber C Funktionen als sicherer und besser getestet zu bezeichnen, zeugt von absoluter Unwissenheit.
Grüssli
-
Blaze schrieb:
benutze ich lieber getestete und gesicherte C-Funktionen, bei denen nichts schiefgehen kann, anstelle von stringstreams.
Dazu kann ich nur das gleiche sagen, wie mein erster Post der gelöscht wurde, hier aber noch zitiert ist

Du redest so ein Blödsinn ...
-
FreakY<3Cpp schrieb:
Dazu kann ich nur das gleiche sagen, wie mein erster Post der gelöscht wurde, hier aber noch zitiert ist

