Article View: de.comp.lang.c++
Article #1760Re: Vergleich 'strcmp()' 'string == string' (Was: Q: gcc 2.7.1: Aufruf einer Konstruktormethode aus einer anderen)
From: Nico Josuttis
Date: Tue, 05 Mar 1996 15:57
Date: Tue, 05 Mar 1996 15:57
36 lines
2190 bytes
2190 bytes
Sorry, aber ich moechte mal kurz einschreiten, habe aber nicht alle
Mails dazu gelesen. Deshalb ein paar Fakten, die (sorry)
evtl. schon jemand gepostet hat:
1) Der Standard umfasst in der Bibliothek einen String.
Der kann natuerlich von und nach char* gewandelt werden
und auch Operationen mit char* durchfuehren.
Insofern verstehe ich die Diskussion mit char* nicht ganz.
Wenn etwas char* ist beziehe ich es mit ein.
Insgesamt ist doch aber wohl die Verwendung von + statt strcat()
und == statt strcmp() weniger fehleranfaellig und somit vorzuziehen.
2) Die Sache ist natuerlich eine Ebene hoeher/abstrakter und
deshalb mitunter langsamer.
ABER NICHT UNBEDING/IMMER:
Typische/gute kommerzielle String-Klassen kopieren String
z.B. nicht sondern verwalten einfach zwei Verweise auf
die gleiche Zeichenfolge.
Man beachte, dass String relativ selten geaendert dagegen oft
kopiert und zugeweisen werden.
Damit sind wir evtl. sogar SCHNELLER als mit einfachen
char* Implementierungen.
Das ganze steht u.a. im Stroustrup und an vielen anderen
Stellen und nennt sich das "reference counting idiom" oder
``handle/body class idiom'' oder ``Counted Body Pattern''.
Generell sollte, denke ich deshalb string verwendet werden
und mit char* zusammen verwendet werden, wenn es aufgrund
von Schnittstellen nach aussen notwendig ist.
Es lohnt sich.
--
Nico address: BREDEX GmbH, Nicolai Josuttis
email: nico@bredex.de Fallersleber-Tor-Wall 23
phone: +49 531 24330-0 D-38100 Braunschweig
fax: +49 531 24330-99 Germany
Technical Details
Message-ID:
<DnsxoD.Cy2@bredex.de>Path:
arc1-ca.pugleaf.net!news.braunschweig.pop.de!bredex!nicoReferences:
<4h2pg1$cto@news.BelWue.DE> <PDZ9BGIH@wuschel.ibb.schwaben.com> <4hasih$73g@news.rrz.uni-koeln.de>Show Full Headers
Complete Article Headers
Newsgroups: de.comp.lang.c++ Path: arc1-ca.pugleaf.net!news.braunschweig.pop.de!bredex!nico From: nico@bredex.de (Nico Josuttis) Subject: Re: Vergleich 'strcmp()' 'string == string' (Was: Q: gcc 2.7.1: Aufruf einer Konstruktormethode aus einer anderen) Message-ID: <DnsxoD.Cy2@bredex.de> Reply-To: nico@bredex.de Organization: Bredex GmbH References: <4h2pg1$cto@news.BelWue.DE> <PDZ9BGIH@wuschel.ibb.schwaben.com> <4hasih$73g@news.rrz.uni-koeln.de> Date: Tue, 5 Mar 1996 15:57:48 GMT