sprintf in C++
-
Hallo wer weiss wie dieser Befehl in C++ geschrieben wird: sprintf
Bei google hab ich nix gefunden -.-
-
sprintf schrieb:
Hallo wer weiss wie dieser Befehl in C++ geschrieben wird: sprintf
Bei google hab ich nix gefunden -.-kannst in C++ gerne sprintf verwenden. das ist oft die beste alternative.
stringstream ist der andere weg, den man vor allem nimmt, um zu zeigen, daß man c++ kann.
-
std::stringstream
-
volkard schrieb:
kannst in C++ gerne sprintf verwenden. das ist oft die beste alternative.
Vor allem die unsicherste (je nach Analysemöglichkeit des Compilers wird eine Fehlbedienung ggf. erkannt, aber dies ist keine Garantie).
volkard schrieb:
stringstream ist der andere weg, den man vor allem nimmt, um zu zeigen, daß man c++ kann.
Nichts für ungut, aber du solltest wohl nicht nur dein C++ Tutorial aktualisieren, sondern vielleicht dein C++ Wissen etwas auffrischen.
-
asc schrieb:
Nichts für ungut, aber du solltest wohl nicht nur dein C++ Tutorial aktualisieren, sondern vielleicht dein C++ Wissen etwas auffrischen.
stringstream kann bei einem einfachen programm gerne mal um den faktor 20 langsamer sein als sprintf. daher meine resentiments. man sollte nicht immer nur das sprachmittel benutzen, das moderner ist. so, wie man auch mal zeiger nehmen darf, obwohl etwas mit einer referenz auch gehen würde.
-
volkard schrieb:
stringstream kann bei einem einfachen programm gerne mal um den faktor 20 langsamer sein als sprintf. daher meine resentiments. man sollte nicht immer nur das sprachmittel benutzen, das moderner ist. so, wie man auch mal zeiger nehmen darf, obwohl etwas mit einer referenz auch gehen würde.
Du kennst die Regel, das man niemals im Vorfeld optimiert?
In erster Linie muss ein Programm möglichst fehlerfrei arbeiten, optimieren kann man immer noch wenn es sauber läuft und der Profiler nachweist das es wirklich ein Flaschenhals ist.
cu André
-
volkard schrieb:
stringstream kann bei einem einfachen programm gerne mal um den faktor 20 langsamer sein als sprintf. daher meine resentiments. man sollte nicht immer nur das sprachmittel benutzen, das moderner ist. so, wie man auch mal zeiger nehmen darf, obwohl etwas mit einer referenz auch gehen würde.
Ich bin selbst kein Fan der "Alles-muß-ein-Stream-sein"-Attitüde, es gibt auf jeden Fall gute Gründe, warum man an manchen Stellen vielleicht eher auf Streams verzichten sollte. Aber ein stringstream sollte trotzdem das erste Mittel der Wahl sein, und nicht umgekehrt. Gerade bei "kleinen" Programmen glaube ich nicht, daß die Langsamkeit ein stringstreams allzusehr ins Gewicht fallen wird.
Und wenn man schon C-Funktionen benutzt, dann doch bitte snprintf.
-
asc schrieb:
Du kennst die Regel, das man niemals im Vorfeld optimiert?
anfängerregel.
da gibt es eine wichtigere regel: erhebe niemals regel zum dogma, denn das führt irgendwann zu mülligem code.
natürlich mache ich mir von anfang an gedanken, ob ich einen vector oder eine deque benutze. es wäre fürchterlich schwach, einfach grundsätzlich vector zu benutzen und nur wenn der profiler es fordert, sich zu überlegen, was die beste klasse dort wäre.
-
Ich hab 0 Plan wie ich das mit dem stringstream machen soll -.-
Bisher brauchte ich stringstream nur um eine int Variable in eine String Variable umzuwandeln ...
-
dooooomi schrieb:
Und wenn man schon C-Funktionen benutzt, dann doch bitte snprintf.
auf das n verzichte ich.
nein, nicht, weil ich so furchtbar cool bin, sondern weil sprintf typischerweise bei sachen wiesprintf(filename,"song%2d.mp3",i);drankommt.
das n bräuchte ich, wenn ich benutzereingaben hätte oder sowas, und dann möchte ich nicht, daß der benutzer beschränkt wird und nehme string und stringstream.
-
asc schrieb:
In erster Linie muss ein Programm möglichst fehlerfrei arbeiten, optimieren kann man immer noch wenn es sauber läuft und der Profiler nachweist das es wirklich ein Flaschenhals ist.
Du solltet nicht in C++ sondern in Java programmieren. Ich gebe Volkard recht. Auch mit sprintf statt stringstream kann ein Programm fehlerfrei sein. Zudem ist sprintf einfacher zu benutzen als stringstream.
-
volkard schrieb:
asc schrieb:
Du kennst die Regel, das man niemals im Vorfeld optimiert?
anfängerregel.
Man, muss ich ein Anfänger sein, nach nunmehr 20 Jahren Programmiererfahrung (und die hälfte der Zeit beruflich).
volkard schrieb:
da gibt es eine wichtigere regel: erhebe niemals regel zum dogma, denn das führt irgendwann zu mülligem code.
Erlich gesagt, glaube ich nach den Antworten des heutigen Tages eher, das deine Ansätze Fehlerträchtiger sind als jede C++ Alternative sein könnte. Es gibt Regeln die aus gutem Grund existieren. Und ja, es kann in Einzelfällen sinnvoll sein eine Regel zu brechen, dies sollte aber die Ausnahme nicht die Regel sein.
Warum schlägst du nicht gleich vor, das alle die C++ lernen lieber von vorne herein auf C umschwenken? Den genau diesen Ansatz hast du am Heutigen Tag zu genüge vertreten.
cu André
-
sprintf schrieb:
Ich hab 0 Plan wie ich das mit dem stringstream machen soll -.-
das da zeigt recht fein, wie man stringstream benutzt. kurz gesagt, wenn du was nach cout ausgeben kannst, dann kannste es auch in einen string stopfen.
http://cplus.kompf.de/artikel/stream4.html
-
volkard schrieb:
asc schrieb:
Du kennst die Regel, das man niemals im Vorfeld optimiert?
anfängerregel.
da gibt es eine wichtigere regel: erhebe niemals regel zum dogma, denn das führt irgendwann zu mülligem code.
natürlich mache ich mir von anfang an gedanken, ob ich einen vector oder eine deque benutze. es wäre fürchterlich schwach, einfach grundsätzlich vector zu benutzen und nur wenn der profiler es fordert, sich zu überlegen, was die beste klasse dort wäre.
Die Auswahl einer richtigen Datenstruktur fällt nicht unter premature optimization, sprintf vs. stringstream schon.
-
asc schrieb:
Man, muss ich ein Anfänger sein, nach nunmehr 20 Jahren Programmiererfahrung (und die hälfte der Zeit beruflich).
nee, nicht anfänger, aber jungspund.
ich kann nichts dafür, wenn du dir nicht ausreichend gedanken über guten programmierstil machst.Warum schlägst du nicht gleich vor, das alle die C++ lernen lieber von vorne herein auf C umschwenken? Den genau diesen Ansatz hast du am Heutigen Tag zu genüge vertreten.
ich hab heute nur c++ getrieben, denke ich.
-
Ähm eure Unterhaltung ist ja schön ^^
Aber könnten wir vielleicht wieder zum Thema zurück kommen xD ?
Hier steht:
http://home.fhtw-berlin.de/~junghans/cref/FUNCTIONS/sprintf.html
sprintf wird verwendet, um Daten zu formatieren und in einer Zeichenkette abzulegen. Im Prinzip handelt es sich um eine Variante von printf und verwendet die gleichen Escape- und Formatierungszeichen.
Wie kann man denn da nun z.b. auf die Zeichenkette zugreifen, irgendwie sagt mir das alles nichts -.-
Kennt wer ein Tutorial zu dem Thema oder so ?
-
volkard schrieb:
dooooomi schrieb:
Und wenn man schon C-Funktionen benutzt, dann doch bitte snprintf.
auf das n verzichte ich.
nein, nicht, weil ich so furchtbar cool bin, sondern weil sprintf typischerweise bei sachen wiesprintf(filename,"song%2d.mp3",i);drankommt.
das n bräuchte ich, wenn ich benutzereingaben hätte oder sowas, und dann möchte ich nicht, daß der benutzer beschränkt wird und nehme string und stringstream.
Zugegeben, es gibt Fälle, wo es schlicht egal ist. Oft sind die Sachen aber bei weitem nicht so einfach, wie in deinem Beispiel. Und einige der bösesten Buffer-Overflows wurden von Programmierern geschrieben, die dachten sie wüßten, was sie tun...
-
c-fan 2009 schrieb:
...
Warum verkriechst du dich nicht wieder in die C-Ecke. Das Anhängen der 2009 ändert auch nichts an deinen Äußerungen.
sprintf mag in Teilen einfacher als stringstream zu verwenden sein, aber über die gründe warum in C++ stringstream eingeführt wurde setzt ihr euch scheinbar gerne hinweg. Und die Fehlersuche nach solchen Problemen hat mich schon mehrere Projekttage (eher Wochen) gekostet, weil irgendein Programmierer lieber die Performance als die Wartbarkeit berücksichtigt hat.
Ja, ein Programm sollte auch Performant laufen, aber nichts desto trotz erkäuft man mit vorträglicher Optimierung meist mehr Fehler, und selten eine wirklich bessere Performance (Man liegt sehr häufig falsch mit der annahme wo Optimierungen nötig sind). Und Wartbarkeit geht auch flöten.
cu André
-
sprintf schrieb:
Ähm eure Unterhaltung ist ja schön ^^
Aber könnten wir vielleicht wieder zum Thema zurück kommen xD ?
Hier steht:
http://home.fhtw-berlin.de/~junghans/cref/FUNCTIONS/sprintf.html
sprintf wird verwendet, um Daten zu formatieren und in einer Zeichenkette abzulegen. Im Prinzip handelt es sich um eine Variante von printf und verwendet die gleichen Escape- und Formatierungszeichen.
Wie kann man denn da nun z.b. auf die Zeichenkette zugreifen, irgendwie sagt mir das alles nichts -.-
Kennt wer ein Tutorial zu dem Thema oder so ?
Zu was jetzt?
-
Hab schon was gefunden hatte da noch den Link hab nur net mehr dran gedacht gehabt _
http://www.c-programmieren.com/C-Lernen.html#sprintf()
Jetzt weiss ich auch glaub ich wieder wie das in C++ ging ...
-
volkard schrieb:
nee, nicht anfänger, aber jungspund.
ich kann nichts dafür, wenn du dir nicht ausreichend gedanken über guten programmierstil machst.Merkwürdig nur das viele Programmierer die ich kenne, mir genau das Gegenteil (zuviele Gedanken über guten Programmierstil) vorwerfen. Und ohne dir auf den Schlips treten zu wollen: Ich halte Herb Sutter, Scott Meyers und Co für fähiger als dich.