c++ bestimmten Buchstaben in string großschreiben

Gast #5956967
Hallo

Wie kann ich einen einzelnen, bestimmten Buchstaben in einem 
vordefinierten string großschreiben? Oder besser noch invertieren?

string meintext "gehdualteresel";

sollte nach der Veränderung an 8. Stelle so sein:
"gehdualTeresel"

ich hab es bereits meintext.replace und toupper versucht, komm aber 
nicht wirklich weiter...
Gast #5957377
mh schrieb:
> GEKU schrieb:
>> Vorsicht , wenn Zeichen wie "äöüß" im Spiel sind.
>
> Vorsicht auch bei allen anderen Zeichen.

Yep, sonst wird noch aus einem Fragezeichen ein großes oder gar ein 
verkehrtes¿

Im Ernst: ich sollte dazuschreiben: das gilt nur für ASCII-Buchstaben 
[a-zA-Z]. Man sollte schon wissen, was man einsetzt, die ASCII-Tabelle 
so ca. im Hinterkopf haben und auch den xor-Operator.
Gast #5957421
leo schrieb:
> Yep, sonst wird noch aus einem Fragezeichen ein großes oder gar ein
> verkehrtes¿
>
> Im Ernst: ich sollte dazuschreiben: das gilt nur für ASCII-Buchstaben
> [a-zA-Z]. Man sollte schon wissen, was man einsetzt, die ASCII-Tabelle
> so ca. im Hinterkopf haben und auch den xor-Operator.

Der c Standard legt nur fest, dass es die Buchstaben gibt. Nur für die 
Ziffern ist festgelegt, dass sie aufeinander folgen.
Gast #5957688
mh schrieb:
>> die ASCII-Tabelle
>> so ca. im Hinterkopf haben ...
>
> Der c Standard legt nur fest, dass es die Buchstaben gibt. Nur für die
> Ziffern ist festgelegt, dass sie aufeinander folgen.

Ja, das stimmt. Allerdings habe ich vor ca. 40 Jahren das letzte mal ein 
Nicht-ASCII-System programmiert.

leo
Gast #5957714
leo schrieb:
> mh schrieb:
>>> die ASCII-Tabelle
>>> so ca. im Hinterkopf haben ...
>>
>> Der c Standard legt nur fest, dass es die Buchstaben gibt. Nur für die
>> Ziffern ist festgelegt, dass sie aufeinander folgen.
>
> Ja, das stimmt. Allerdings habe ich vor ca. 40 Jahren das letzte mal ein
> Nicht-ASCII-System programmiert.
>
> leo

Möglich, aber warum kann man es nicht gleich richtig machen? Ein toupper 
ist zudem deutlich einfacher zu lesen als ein ^|+-/=0x42 oder was auch 
immer vorgeschlagen wurde. Ich müsste erst nachlesen was das bedeutet, 
da ich die ASCII Werte nicht auswendig kenne, und keinen Grund sehe sie 
zu lernen.
Gast #5957930
mh schrieb:
> Möglich, aber warum kann man es nicht gleich richtig machen? Ein toupper
> ist zudem deutlich einfacher zu lesen als ein ^|+-/=0x42 oder was auch
> immer vorgeschlagen wurde. Ich müsste erst nachlesen was das bedeutet,
> da ich die ASCII Werte nicht auswendig kenne, und keinen Grund sehe sie
> zu lernen.

zumal das vorgeschlagene

leo schrieb:
> Wenn schon, dannmeintext[7] ^= 0x20; // toggle

nicht Idempotent ist. Wenn da schon ein Großbuchstabe steht kommt genau 
das raus was der TO nicht will. daher würde ich mindesten |= 0x20 nehmen 
oder eben besser die toupper funktion. Idempotenz habe ich gelernt ist 
etwas das man als Informatiker immer versuchen sollte zu erreichen wenn 
möglich
Gast #5957981
leo schrieb:
> imonbln schrieb:
>> Wenn da schon ein Großbuchstabe steht kommt genau
>> das raus was der TO nicht will.
>
> Wie wuerdest du das vom TO interpretieren:
>
>  "Oder besser noch invertieren?"
>

Nicht immer weiss der TO was er wirklich will ;)
Aber mal ernsthaft, deine Lösung erfüllt alle Anforderung welche der TO 
gestellt hat und ist daher durchaus Valide und gut. Ich habe jedoch auch 
schon oft genug erlebt wie es zu vermeidbaren Fehlern in Komplexen 
Systemen kamm welche darauf zurück Zuführen waren das etwas nicht 
Idempontent ist und einfach Toggelt. Daher wollte ich hier zumindest mal 
drauf hinweisen das ein statischer ausgang möglicherweise besser ist.

leo schrieb:
> ... und das macht Kleinbuchstaben.
>
> leo

noch ein Grund die toupper Funktion zu verwenden oder halt |= ~0x20 zu 
schreiben. Um ehrlich zu seinen habe ich mir den ASCII Standard seit 
Jahren nicht mehr angesehen wozu auch ?
Gast #5959252
Rolf M. schrieb:
> leo schrieb:
>> Und die ersten 128 Bytes von Unicode sind?
>
> …nur ein Teil von Unicode.

Genau. Die ersten 128 Codepoints sind ASCII. Ob "darueber" latin1, 
iso_8859-15, oder unicode liegt, ist vollkommen egal.

[A-Za-z] bleiben ident.

leo

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.