Problem: argv und string
-
gewi schrieb:
...
Für einen Beispiel-Source-Code wäre ich dankbar.mfg gewi
Mehr als den von mir schon gegebenen (vollkommen korrekten, kurzen, verständlichen, einfachen, sicheren, ...) werde ich nicht posten.
Gruß,
Simon2.
P.S.: Wenn Du irgendwann mal einen (char const*) auf die Daten brauchst, ist string::c_str() Dein Freund.
-
ich will keinen string der c++-Bibliotheken nehmen, aber gibt es eine Möglichkeit, wie ich das als c-string verwirkliche?
zB: aaa[500]={'h','a','u','s'};
-
gewi schrieb:
ich will keinen string der c++-Bibliotheken nehmen,...
Warum nicht ?
Warum nimmst Du dann cout "aus den c++-Bibliotheken" ?
Falls Du es nicht weisst: std::string gehört genauso zum Standard wie char*...ich jedenfalls habe keine Lust, dasselbe nochmal mühsam falsch zu machen, was Andere bereits (besser und) richtig gemacht haben.

Gruß,
Simon2.
-
ich nehme Funktionen und Konventionen der c-Sprache, da diese schneller sind, und der restliche Code auch so aufgebaut ist(teils c, teils c++)
ich will nicht unbedingt etwas nachprogrammieren, was Andere schon gemacht haben, aber wie kann ich ein argv in einem c-String speichern?
-
gewi schrieb:
ich nehme Funktionen und Konventionen der c-Sprache, da diese schneller sind
Schwachsinn.
und der restliche Code auch so aufgebaut ist(teils c, teils c++)
Schreibst Du Aufsätze/Artikel/Veröffentlichung auch halb in Deutsch, halb in Englisch?
ich will nicht unbedingt etwas nachprogrammieren, was Andere schon gemacht haben
Eben. Deswegen verwendet man (Standard-)Bibliotheken.
-
wie wäre es eigentlich wenn du dir das bereits erwähnte strcpy ansiehst?
-
ich meinte strcpy, nicht strlen.
aber ich hatte schond as erste mal strcpy gesagt.also machs bitte jetzt auch.
-
printf ist schneller als cout, da es keine Klassen verwendet.
das halb c halb c++ ist mein Stil zu Programmieren, vielleicht ist es nicht nachvollziehbar, aber wenn, dann ist das mein Problem, aber Danke für den Hinweis

soviel ich weiß gibt es in den Standartbibliotheken auch keine Funktion, um argv in einem c-String zu speichern
-
gewi schrieb:
printf ist schneller als cout, da es keine Klassen verwendet.
Mann, Du hast ja wirklich die Weisheit mit dem Löffel gefressen. Mal im ernst: das ist patenter Quatsch. Klassen sind *nicht* a priori langsamer als Funktionen.
soviel ich weiß gibt es in den Standartbibliotheken auch keine Funktion, um argv in einem c-String zu speichern
Doch. 'std::strcpy'. Wie jetzt schon mehrmals gesagt worden ist.
-
gewi schrieb:
printf ist schneller als cout, da es keine Klassen verwendet.
Autsch.
gewi schrieb:
das halb c halb c++ ist mein Stil zu Programmieren, vielleicht ist es nicht nachvollziehbar, aber wenn, dann ist das mein Problem, aber Danke für den Hinweis

Es wird zu "unserem" Problem wenn du hier im Forum schreibst.
gewi schrieb:
soviel ich weiß gibt es in den Standartbibliotheken auch keine Funktion, um argv in einem c-String zu speichern
Lern lesen.
-
tut mir Leid, das erste strlen hat mich verwirrt, mit strcpy geht es, vielen Dank
man lernt echt nie ausZu dem Punkt, dass c schneller als c++ ist:
Ich habe ein Programm geschrieben, dass mir alle Zahlen von 1-10^7 in eine Datei schreibt. Dabei hat es c++ (ofstream) verwendet und die Zeit gemessen, und diese ausgegeben (mit printf). Dann wieder die gleichen Zahlen mit fprintf in eine Datei geschrieben, und die dafür benötigte Zeit mit printf ausgegeben, deswegen bin ich der Auffassung, dass c schneller als c++ ist.mfg gewi
-
Dann programmiere doch gleich in C, wenn es deiner mEinunge nach so viel schneller ist.
-
gewi schrieb:
Ich habe ein Programm geschrieben, dass mir alle Zahlen von 1-10^7 in eine Datei schreibt. Dabei hat es c++ (ofstream) verwendet und die Zeit gemessen, und diese ausgegeben (mit printf). Dann wieder die gleichen Zahlen mit fprintf in eine Datei geschrieben, und die dafür benötigte Zeit mit printf ausgegeben, deswegen bin ich der Auffassung, dass c schneller als c++ ist.
Ja, darum gab es auch schon einige Diskussionen im Forum. Zwei Bemerkungen dazu:
- Diese Ergebnisse sind je nach verwendetem Compiler und verwendeter Implementierung der Standardbibliothek *stark* unterschiedlich. Mal ist das eine schneller, mal das andere. Es gibt an sich keinen Grund, wieso C++-Streams langsamer sein sollten als C-Methoden.
- Der Grund, aus dem C++-IO theoretisch langsamer sein *könnte* ist der, dass die C++-IO-Klassen virtuelle Funktionen verwenden. Virtuelle Funktionen sind in der Tat langsamer als "normale" Methoden. Allerdings ist das in diesem Fall nicht ausschlaggebend.
Mit Klassen hat das aber in keinem Fall etwas zu tun. Die Verwendung von Klassen macht einen Code *nicht* langsamer.
-
ich habe MSVC++ verwendet
ok, dann habe ich wieder etwas dazu gelernt: c++ und c sind in etwa gleich schnell, die Unterschiede sind vernachlässigbar klein oder je nach Compiler anders. Danke für diese Info
mfg gewi
-
lässt sich so pauschal auch nicht sagen. viele reinen c-methoden, gerade diejenigen, die direkt auf dem speicher arbeiten, sind rasend schnell. aber das sind dinge, um die man sich nen kopf machen kann, wenn man in der lage ist, robuste und effiziente programme zu designen. das ist ein langwieriger prozess, der jahre dauert. und erst wenn man diesen stand erreicht hat, dann lohnt es sich, mal auf "mikrooptimierungen" zu achten. aber bevor man soweit ist, sollte man lieber auf standards zurückgreifen, die das problem anständig lösen. wenn vielleicht auch ne halbe sekunde langsamer.
-
gewi schrieb:
tut mir Leid, das erste strlen hat mich verwirrt, mit strcpy geht es, vielen Dank
man lernt echt nie ausZu dem Punkt, dass c schneller als c++ ist:
Ich habe ein Programm geschrieben, dass mir alle Zahlen von 1-10^7 in eine Datei schreibt. Dabei hat es c++ (ofstream) verwendet und die Zeit gemessen, und diese ausgegeben (mit printf). Dann wieder die gleichen Zahlen mit fprintf in eine Datei geschrieben, und die dafür benötigte Zeit mit printf ausgegeben, deswegen bin ich der Auffassung, dass c schneller als c++ ist.mfg gewi
öh, schreib das Programm nochmal, aber lass das schreiben der Zahlen in die Datei via Template-Metaprogrammierung erledigen und schau mal dann, was bei der Ausführung schneller ist

-
Template-Metaprogrammierung sollte ich mir echt mal anschaun, wenn es so viel schneller ist.
-
geht halt nur, wenn die Informationen zur Compiletime vorliegen ...
/Edit:
Bei deinem Geschwindigkeitswahn solltest du dir mal Assembler anschauen.
-
mal ganz ehrlich. nen programm, dass paar millarden fortlaufende zahlen in ne datei schreibt. wen juckt da die geschwindigkeit? das macht man einmal, dann hat man die datei.
-
ne 60 MB/s platte kann grob 10 mio zahlen die sekunde aufnehmen.
auf ner 2 GHz box sind das dann 200 takte je zahl.platte und CPU halten sich da wohl noch die waage.
du hast deine festplatte mit gemessen.
wie waers, wenn du die performance nicht an hand von festplatten oder INC operationen misst?
probiers doch mal mit methodenaufrufen und rekursion.