Zum Inhalt springen

Empfohlene Beiträge

Geschrieben
Original geschrieben von Guybrush Threepwood

Hi,

das kannst du doch in 3 Zeilen selber schreiben:)

Gruß

Guybrush

Sorry, da hatte ich mich vielleicht n bisschen unklar ausgedrückt:

Ich meine bei nem CString-Objekt, nicht bei nem 0-Terminierten String.

Geschrieben
Original geschrieben von backdraft

Sorry, da hatte ich mich vielleicht n bisschen unklar ausgedrückt:

Nicht nur das, denn

CString
hat nichts mit Standard-C++ zu tun, und mit C schon gar nichts. ;)

--> Thema verschoben.

P.S.:

GTs Lösung funktioniert trotzdem, wenn du vorher aus dem CString einen const char* machst. Da reicht eine einfache Zuweisung, weil CString dafür einen cast-Operator hat.

Geschrieben

schlecht:

for (int i=0; i<strlen(szString); i++)

if(szString == cZeichen)

nAnzZeichen++;

gut:

int *y = (int*) &szString + strlen(szString)

for (int *i = (int*) &szString; i != y; ++i)

if(szString[*i] == cZeichen)

++nAnzZeichen;

Zeiger + Präfixnotation *gg

Geschrieben

Nicht böse sein, aber da sind ein paar kleine Fehler reingerutscht:

int *y = (int*) &szString + strlen(szString) // Vorsicht: int klappt nur bei Unicode oder WChar;

for (int *i = (int*) &szString; i != y; ++i)

{ // Klammern vergessen, sonst wird nur einmal durchgerauscht

if(szString[*i] == cZeichen) // nur *i ohne szString-Index, weil der Zeiger i selber die Adresse von szString ist

++nAnzZeichen;

}

Geschrieben

@A-RAM:

Dass das ganze nur funktionieren kann, wenn sizeof int == sizeof char, hat Crush ja schon geschrieben. Aber auch der Adressoperator vor szString ist in beiden Fällen falsch. Und wenn du statt int* (wieso eigentlich int*?) char* verwendest, sind auch die casts nicht mehr notwendig.

@Crush:

Die Klammern sind in diesem konkreten Fall nicht zwingend notwendig. ;)

Geschrieben

Hallo,

Das ist auch deutlich einfacher zu verstehen als das weiter oben gepostete überaus kryptische Beispiel ;). In der Praxis ist das aber eher unerheblich, da ein guter Compiler die Indizes auf Zeiger abbildet (sofern es einen Laufzeitunterschied geben sollte).

Nic

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...