Hallo! Ich bin es mal wieder. Bevor ich mir hier weiter die Finger wund Google habe ich mal eine Frage. Wie wie ja bereits geklärt hatte, danke noch einmal, schreibt man dies out_name = malloc(strlen("name")+1); so in C++ char out_name = new char[strlen("name")+1]; Bei dieser Variante hier bin ich auf vector gestossen. out_name = realloc(out_name, strlen(dir)+1); Die Frage ist die Umsetzung so richtig? char out_name = vector<char>(out_name, strlen(lib)+1); Frank
Hallo, Am Mon, 08 Mar 2004, Frank Liebelt schrieb:
Bevor ich mir hier weiter die Finger wund Google habe ich mal eine Frage.
[snip] Du willst #include <string> string s = "name"; string s = string("name"); o.ae. und ggfs. s.c_str() verwenden. -dnh -- 17: Vollkompatibel zur Datenautobahn Gerät verfügt über eine serielle Schnittstelle. (Peter Berlich)
Hi Frank! Frank Liebelt schrieb:
Wie wie ja bereits geklärt hatte, danke noch einmal, schreibt man dies out_name = malloc(strlen("name")+1); so in C++ char out_name = new char[strlen("name")+1];
Nein so: char* out_name = new char [strlen("name")+1]; Das Sternchen mag für dich zwar eine Kleinigkeit sein, es macht aber den gewissen Unterschied aus ;-)
Bei dieser Variante hier bin ich auf vector gestossen. out_name = realloc(out_name, strlen(dir)+1);
Damit reservierst du im Endeffekt nur Speicherplatz der Länge 'strlen(dir)+1' für die Variable 'out_name'.
Die Frage ist die Umsetzung so richtig?
char out_name = vector<char>(out_name, strlen(lib)+1);
Wenn, dann hättest du von Anfang an einen string aus der STL benutzen sollen und keinen vector. Die 1:1-Umsetzung sollte ungefähr so aussehen: // neuen Speicherplatz reservieren char* out_name2 = new char [strlen(dir)+1]; // chars kopieren strcpy(out_name2, out_name) // alten Speicherplatz freigeben delete[] out_name; // Pointer umbiegen out_name = out_name2; Ich hoffe, das ist richtig, was ich hier verzapfe. Ich habe schon lange kein C++ mehr benutzt und es ist sehr spät... Gruß, Michael
Hi!
char out_name = new char[strlen("name")+1];
Nein so: char* out_name = new char [strlen("name")+1];
Gut, habe ich ja auch so im Code stehen! Ist wohl auf Grund der aktuellen Zeit untergegangen. Ganz erhlich frage ich mich sowie so wo darin der Unterschied liegt? Was bedeutet der * ? Mein Buch sagt mir irgendwie nichts dazu aus und suche mal im Netz nach * :)
Wenn, dann hättest du von Anfang an einen string aus der STL benutzen sollen und keinen vector. Die 1:1-Umsetzung sollte ungefähr so aussehen:
// neuen Speicherplatz reservieren char* out_name2 = new char [strlen(dir)+1]; // chars kopieren strcpy(out_name2, out_name) // alten Speicherplatz freigeben delete[] out_name; // Pointer umbiegen out_name = out_name2;
Ich hoffe, das ist richtig, was ich hier verzapfe. Ich habe schon lange kein C++ mehr benutzt und es ist sehr spät...
Ich hoffe auch :) Zumindest scheint es zu funktionieren! Gruß Frank
Hi, On Mon, 8 Mar 2004, Frank Liebelt wrote:
Ganz erhlich frage ich mich sowie so wo darin der Unterschied liegt? Was bedeutet der * ?
Der Typ "T*" heisst "pointer to T". Wenn du dir Tatsache diese Frage stellst, solltest du vielleicht auch noch ein C (oder C++) Grundlagen Buch besorgen.
Mein Buch sagt mir irgendwie nichts dazu aus und suche mal im Netz nach * :)
Falls es ein Buch ist, welches eine Beschreibung/Einfuehrung in C/C++ geben soll (im Gegensatz zu Goethes gesammelten Werken z.B.), dann schmeisse es weg, es ist voellig wertlos. Ciao, Micha.
Hi,
Mein Buch sagt mir irgendwie nichts dazu aus und suche mal im Netz nach * :)
Falls es ein Buch ist, welches eine Beschreibung/Einfuehrung in C/C++ geben soll (im Gegensatz zu Goethes gesammelten Werken z.B.), dann schmeisse es weg, es ist voellig wertlos.
Tja, das ist son 320 Seiten Schmöker von Mark und Technik. C++ unter Windows und Linux. Ich hatte mir die Frage auch schon selbst beantwortet :) Vieleicht hätte ich von vornherein meinen anderen C++ Wälzer nehmen sollen oder das Java 2 Buch. Da steht es nämlich drin. (In beiden) Ich hoffe, dass ich nicht nerve, wenn ich noch die eine oder andere Frage habe! Zumindest stelle ich die Frage eh nur dann wenn ich keine eigene Lösung gefunden habe. Ich will ja was lernen ;-) Einen schönen Tag noch! Frank
Hi, On Mon, 8 Mar 2004, Frank Liebelt wrote:
Ich hatte mir die Frage auch schon selbst beantwortet :) Vieleicht hätte ich von vornherein meinen anderen C++ Wälzer nehmen sollen oder das Java 2 Buch. Da steht es nämlich drin. (In beiden)
Du hast merkwuerdige Buecher. In einem Java2 Buch sollte es naemlich _nicht_ drinstehen, da Java das Konzept von Pointern nicht kennt. Schmeiss dieses Buch also auch weg. (Okay ich koennte mir vorstellen es steht in dem Teil drin, der das JNI beschreibt, und damit dann wahrscheinlich C oder C++ streift, aber das gehoert ganz klar nicht in die Java Sprach-Beschreibung selbst. Ich bezweifele jetzt auch einfach mal, das eine JNI Beschreibung in den ueblichen Brot-und-Butter Java Buechern zu finden sein wird).
Ich hoffe, dass ich nicht nerve, wenn ich noch die eine oder andere Frage habe!
Kein Problem, solange du dich nicht an manchmal grossmaeuligen Antworten stoerst ;) Ciao, Micha.
Frank Liebelt wrote:
Mein Buch sagt mir irgendwie nichts dazu aus und suche mal im Netz nach * :)
Falls es ein Buch ist, welches eine Beschreibung/Einfuehrung in C/C++ geben soll (im Gegensatz zu Goethes gesammelten Werken z.B.), dann schmeisse es weg, es ist voellig wertlos.
Tja, das ist son 320 Seiten Schmöker von Mark und Technik. C++ unter Windows und Linux.
tu Dir den Gefallen und investiere das Geld in "`Die C++ Programmiersprache"' von Bjarne Stroustrup (AW-Verlag) es ist jeden Cent wert. Es ist IMHO sogar auf Deutsch gut, was man von vielen Computerbüchern nciht sagen kann [1] *Ich* finde die Bücher von Scott Meyers (Effective C+) auch sehr gut.... aber nur als Ergänzung... Wenn Du gerne am Monitor liest kann auch eine Suche im Netz nach Bruce Eckel "`Thinking in C++"' nicht schaden... Gruss Andreas [1]: ich hab letztens in der Mayerschen ein neue Auflage von A. Watt Computergrafik durchgeblättert, da gibts keinen Octree drin nur eine sehr seltsame Übersetzung, die ich mir nicht mal mehr merken kann...
Hi, On Mon, 8 Mar 2004, Andreas Loesch wrote:
[1]: ich hab letztens in der Mayerschen ein neue Auflage von A. Watt Computergrafik durchgeblättert, da gibts keinen Octree drin nur eine sehr seltsame Übersetzung, die ich mir nicht mal mehr merken kann...
Schade, das haette mich jetzt interessiert ;-) Obwohl, manchmal hoeren sich sogar korrekte deutsche Worte komisch an, wenn man nur englische Begriffe gewoehnt ist z.B. Ecken und Boegen anstatt vertices/nodes und edges/arcs ;) Ciao, Micha.
Michael Matz wrote:
Hi,
On Mon, 8 Mar 2004, Andreas Loesch wrote:
[1]: ich hab letztens in der Mayerschen ein neue Auflage von A. Watt Computergrafik durchgeblättert, da gibts keinen Octree drin nur eine sehr seltsame Übersetzung, die ich mir nicht mal mehr merken kann...
Schade, das haette mich jetzt interessiert ;-) Obwohl, manchmal hoeren sich sogar korrekte deutsche Worte komisch an, wenn man nur englische Begriffe gewoehnt ist z.B. Ecken und Boegen anstatt vertices/nodes und edges/arcs ;)
ja, der Begriff war schon korrekt, halt genau übersetzt :) soweit ich mich noch dran erinnere, wurde das als Achterbaum oder Achtbaum oder so übersezt, aber ein Fachbegriff ist ein Fachbegriff ist ein Fachbegriff... Ich weigere mich auch meinen Raycasting-Algorithmus als Strahlenwerfer zu bezeichen ... Andreas
Hi, On Mon, 8 Mar 2004, Andreas Loesch wrote:
Ich weigere mich auch meinen Raycasting-Algorithmus als Strahlenwerfer zu bezeichen ...
Hoert sich doch gut an. Fuer andere lustige Wortschoepfungen empfehle ich die Lektuere der Computer-BILD. Auf der Ausgabe wo die SuSE CD drauf war (ist noch nicht lange her) konnte man auf der Titelseite von einem "vollstaendigen Betriebsprogramm" samt vieler toller Features wie z.B. einem "Internet Plauderprogramm kopete" lesen. ;-) Also im Eindeutschen ist die Computer-BILD ungeschlagen, und ich bin mir nicht ganz sicher, ob ich das nicht sogar gut finde. Es ist jedenfalls deutlich konsequenter als der andere verdenglischte Billiggrabbelkistenschreibselmist. Ciao, Micha.
Michael Matz wrote:
Hi,
On Mon, 8 Mar 2004, Andreas Loesch wrote:
Ich weigere mich auch meinen Raycasting-Algorithmus als Strahlenwerfer zu bezeichen ...
Hoert sich doch gut an.
naja, aber...
Fuer andere lustige Wortschoepfungen empfehle ich die Lektuere der Computer-BILD.
lieber nicht
Features
hmm, das Wort gehört aber auch noch nicht solange zur Deutschen Sprache...
Also im Eindeutschen ist die Computer-BILD ungeschlagen, und ich bin mir nicht ganz sicher, ob ich das nicht sogar gut finde. Es ist jedenfalls deutlich konsequenter als der andere verdenglischte Billiggrabbelkistenschreibselmist.
an sich stimmt das, viele Leute verstecken mit entsprechenden Worten die Belanglosigkeit der Aussagen, aber insbesondere in diesem Bereich sucht man doch häufiger nach Schlagworten und da ist dann immer die Frage, wie übersetze ich das jetzt und finde ich dann was ich suche. Noch ein anderes Beispiel: Das Buch der Gang of four - Design Patterns gibt es auch in einer Deutschen Übesetzung, dadrin sind viele der Entwurfsmuster ins Deutsche übersetzt, so dass ich jedesmal vorher überlege, worunter finde ich das jetzt. Das Problem ist dann häufig die mehrfache Übersetzungsmöglichkeit, z.B. stack da kenn ich entweder Stapel oder Kellerspeicher als Begriffe, wer weiss, was es da ncoh alles gibt. in dem Zusammenhang zwei Zitate: ----------------------------------------- Autor unbekannt: Sprache ist da zum Kommunizieren (wie heisst das deutsche Wort? Ah ja, Miteinanderreden. Noe das hat nicht die gleiche Bedeutung....). Wer falsche oder ungebraeuchliche Begriffe waehlt, darf sich nicht wundern, wenn er oder sie nicht verstanden wird. ----------------------------------------- Autor unbekannt, dürfte aber jeder schon mal im Netz gefunden haben, der Klassiker sozusagen (und ob da die Eindeutschung so toll ist...) Mutterbrett und Riesenbiss Den meisten von uns ist klar, dass das englische Wort Computer vom Verb compute (rechnen, schätzen) kommt, dass ein Computer also ein Rechner oder Schätzer ist. Aber noch immer gibt es viele Zeitgenossen, die vielleicht gerade erst anfangen, sich mit diesem komplexen Thema etwas näher zu befassen. Dieser Artikel soll all jenen helfen, die nicht mit einem Spielbuben aufgewachsen sind und die nicht schon von Kind auf all diese verwirrenden Begriffe wie eine Muttersprache auf natürlichem Wege erlernen konnten. Beginnen wir vielleicht mit den einfachen Dingen, die wir sehen, anfassen und damit auch noch begreifen können. Alle Bausteine eines Schätzers werden als Hartware bezeichnet. Es ist sehr wichtig, bei der Auswahl der Hartware sorgsam zu sein, denn nur auf guter Hartware kann die Weichware richtig schnell laufen. Bei der Hartware ist das Mutterbrett von besonderer Bedeutung. Das Mutterbrett soll unter anderem mit einem Schnitzsatz von Intel ausgerüstet sein. Die gleiche Firma sollte auch die ZVE (Zentrale Voranschreitungs-Einheit) geliefert haben. Damit wir uns bei der Arbeit richtig wohl fühlen, sollten wir einen 17-Daumenlang-Vorzeiger und ein ordentliches Schlüsselbrett dazulegen. Damit auch anspruchsvolle Weichware eine gute Vorführung zeigt, müssen mindestens 32 Riesenbiss Erinnerung eingebaut sein. Natürlich gehört neben dem 3½-Daumenlang-Schlappscheibentreiber auch eine Dichtscheiben-Lese-nur-Erinnerung zur Grundausrüstung. Eine Hartscheibe mit vier Gigantischbiss dürfte für die nächsten zwei bis drei Jahre ausreichend Erinnerungsplatz für Weichware und Daten bieten. Wenn wir unseren PS (persönlichen Schätzer) auch zum Spielen benutzen wollen, sollten wir uns neben der Maus auch noch einen Freudenstock und ein gutes Schallbrett anschaffen. Winzigweich und Kraftpunkt: So, damit sind nun die optimalen Grundlagen für Einbau und Betrieb der Weichware geschaffen. Damit die Weichware auf unserer Hartware überhaupt laufen kann, braucht es ein Betriebssystem. Es empfiehlt sich heute, ein solches mit einem grafischen Benutzer-Zwischengesicht zu installieren. Besonders weit verbreitet sind die Systeme Winzigweich-Fenster 3.1 und das neuere Fenster 95 des gleichen Herstellers (Gerüchten zufolge soll übrigens noch in diesem Jahr das brandneue Fenster 98 mit integriertem Zwischennetz-Erforscher erscheinen - letzteres ist ärgerlich für Leute, die lieber mit dem Netzschaft-Schiffsführer wellenreiten wollen). Winzigweich-Systeme haben die Eigenart, öfter mal einen Krach zu verursachen. Dann müssen sie neu gestiefelt werden. Schläger verzichten auf ein grafisches Zwischengesicht und bevorzugen ein altes, Befehlslinien-Ausdeuter-ausgerichtetes Vielfachbeaufgabungs-Betriebssystem namens Einheitlix, weil sie behaupten, sie wüssten schon, was sie tun. Einheitlix hat den Vorteil, daß es auf verschiedenen Schätzern mit unterschiedlichen ZVEs läuft. Auch auf älteren Geräten hat es eine gute Vorführung. Einheitlix ist furchtbar umständlich zu bedienen, aber der Schläger kann damit alles machen, was er will. Zum Beispiel ganz schnell den Schätzer kaputt. Für Leute, die mit ihrem Schätzer anspruchsvolle Arbeiten erledigen wollen, gibt es unter Fenster 95 das berühmte Büro fachmännisch 97. Dieses Erzeugnis besteht aus den neuesten Ausgaben der Weichwaren Wort, Übertreff, Kraftpunkt und Zugriff. Damit stehen dem Benutzer alle wichtigen Funktionen wie Wortveredelung, Ausbreitblatt, Präsentationsgrafik und Datenstützpunkt-Behandlung zur Verfügung. Viel billiger ist das Sternen-Büro von der Hamburger Firma Sternen-Abteilung, das es auch für Einheitlix gibt. Sehr beliebt sind auch der Sumpfblüten-Organisierer und Schichtkäse-Ausdrück, das für Tischplatten-Veröffentlichung gebraucht wird. Aufsteller und Einsetzer: Wer selbst gerne Anwendungen entwickelt, kann dies unter Fenster beispielsweise mit dem modernen Sichtbar Grundlegend tun. Natürlich gibt es vor dem Gebrauch auch gewisse Hindernisse zu überwinden. Die Weichware muß zuerst via Aufsteller oder Einsetzer auf der Hartscheibe eingerichtet werden. Das kann sehr viel Zeit brauchen, wenn sie ursprünglich auf Schlappscheiben geliefert wurde. Das Einrichten ab Dichtscheibe ist sehr viel angenehmer und schneller. Leider stellen aber auch hier die Aufsteller oft Fragen, die von vielen unverständlichen Begriffen nur so wimmeln. Aber die wollen wir uns ein andermal vornehmen. -----------------------------------------------
Hi, On Mon, 8 Mar 2004, Andreas Loesch wrote:
Features
hmm, das Wort gehört aber auch noch nicht solange zur Deutschen Sprache...
Nur das in "" waren Zitate (nach Gedaechtnis).
in dem Zusammenhang zwei Zitate: ----------------------------------------- Autor unbekannt: Sprache ist da zum Kommunizieren (wie heisst das deutsche Wort? Ah ja, Miteinanderreden. Noe das hat nicht die gleiche Bedeutung....).
Nee, eigentlich kommt Kommunikation von Angleichen (der Meinung, des Status', von was auch immer).
Wer falsche oder ungebraeuchliche Begriffe waehlt, darf sich nicht wundern, wenn er oder sie nicht verstanden wird.
Ganz recht. Ich bin beileibe kein Verfechter eines Deutsch ueber alles. Aber es gibt (gerade in Mathematik und auch noch theoretischer Informatik) gute deutsche Begriffe, da muss man nicht englisch reden. In der Informatik tu ich es trotzdem meistens ;)
Autor unbekannt, dürfte aber jeder schon mal im Netz gefunden haben, der Klassiker sozusagen (und ob da die Eindeutschung so toll ist...)
Naja, das ist (schlechte) Satire, da wird natuerlich bis zur Bloedheit uebertrieben. Um das Beispiel aus der Bild zu nehmen: "Internet Plauderprogramm" ist zwar auf den ersten Blick recht lustig (ich jedenfalls habe herzlich gelacht), aber nach laengerem Nachdenken finde ich es fuer die Zielgruppe eine durchaus bessere Bezeichnung als "Chatprogramm". Ich will es deshalb nicht gleich in iX lesen ;) Ciao, Micha.
On Mon, 2004-03-08 at 16:00, Andreas Loesch wrote:
Michael Matz wrote:
Hi,
On Mon, 8 Mar 2004, Andreas Loesch wrote:
Ich weigere mich auch meinen Raycasting-Algorithmus als Strahlenwerfer zu bezeichen ...
Hoert sich doch gut an.
naja, aber...
Fuer andere lustige Wortschoepfungen empfehle ich die Lektuere der Computer-BILD.
lieber nicht
Features
hmm, das Wort gehört aber auch noch nicht solange zur Deutschen Sprache...
Also im Eindeutschen ist die Computer-BILD ungeschlagen, und ich bin mir nicht ganz sicher, ob ich das nicht sogar gut finde. Es ist jedenfalls deutlich konsequenter als der andere verdenglischte Billiggrabbelkistenschreibselmist.
an sich stimmt das, viele Leute verstecken mit entsprechenden Worten die Belanglosigkeit der Aussagen, aber insbesondere in diesem Bereich sucht man doch häufiger nach Schlagworten und da ist dann immer die Frage, wie übersetze ich das jetzt und finde ich dann was ich suche.
Noch ein anderes Beispiel: Das Buch der Gang of four - Design Patterns gibt es auch in einer Deutschen Übesetzung, dadrin sind viele der Entwurfsmuster ins Deutsche übersetzt, so dass ich jedesmal vorher überlege, worunter finde ich das jetzt.
Das Problem ist dann häufig die mehrfache Übersetzungsmöglichkeit, z.B. stack da kenn ich entweder Stapel oder Kellerspeicher Grins ;)
Zwischen Stapel- und Kellerspeicher bestehen Unterschiede: Ein wesentlicher: "Kellerspeicher" waren mal einmal (sind es noch?) patentiert, "Stapelspeicher" nicht. Meines Wissens ist dies der Hauptgrund, warum heutzutage vorwiegend "Stapelspeicher" verwendet werden und im Englischen vorwiegend der Begriff "Stack" (== Stapel) verwendet wird.
Die gleiche Firma sollte auch die ZVE (Zentrale Voranschreitungs-Einheit) geliefert haben. ;)
Zu meiner Studienzeit (Mitte der 80er bis Anfang der 90er) wurde diese Abkürzung in Datenverarbeitsungsvorlesungen tatsächlich verwendet: "Zentrale Verarbeitungseinheit" .. engl. CPU manchmal auch "ZVM" ... "Zentrales Verarbeitungsmodul" Ralf
On Monday 08 March 2004 03:01, Frank Liebelt wrote:
Wie wie ja bereits geklärt hatte, danke noch einmal, schreibt man dies out_name = malloc(strlen("name")+1); so in C++ char out_name = new char[strlen("name")+1];
Bei dieser Variante hier bin ich auf vector gestossen. out_name = realloc(out_name, strlen(dir)+1);
Die Frage ist die Umsetzung so richtig?
char out_name = vector<char>(out_name, strlen(lib)+1);
Sehr viel Sinn hat dieser Ansatz nicht, C einfach in C++ -Syntax umzusetzen.
C++ ist sehr viel mehr als aufgebohrte C-Syntax. Was C++ ausmacht, ist die
Objektorientierung - da programmiert man ganz anders als in C. Vor allem
verwendet man vorhandene Klassenbibliotheken für Allerweltsaufgaben - die C++
-STL (Standard Template Library) mit ihren Strings und Containerklassen und
Ausgabeklassen - oder auch Qt (neben Widgets auch ebenfalls Strings,
Container und allerhand nützliche Sachen).
Wirklich effizient ist die Umsetzung Deines Problems eher nach der Methode
"rauskriegen, was es macht, wegwerfen, in C++ objektorientiert neu
schreiben"...
CU
--
Stefan Hundhammer
participants (7)
-
Andreas Loesch
-
David Haller
-
Frank Liebelt
-
Michael Matz
-
Michael Wenger
-
Ralf Corsepius
-
Stefan Hundhammer