CString Problem
-
Ich programmiere gerade eine art suche, für einen Texteditor.
Nun möchte ich das nach SUCHBEGRIFF, suchbegriff, und Suchbegriff gesucht wird.Und da ist der Haken. Wie bekomme ich es hin, das der erste Buchstabe nur Groß ist ?
CString suche ="TEST", hilf=""; suche.MakeLower(); hilf =suche[0]; hilf.MakeUpper(); suche.SetAt(0,hilf[0]);
so geht es ohne Probleme. Allerdings frag ich mich ob das nicht einfacher geht, und
vorallem, ob ich nicht die hilfsvariable einsparen kann...Devil
-
hmmm, ich würde den ganzen string per makelower klein machen und dann suchen.
Weis ja net ob dir das hilft
-
suche.MakeLower(); suche[0] = _totupper( suche[0]);
-
Vielleicht so:
CString suche="test"; char* c = suche.GetBuffer(); c[0] = ::toupper(c[0]); suche.ReleaseBuffer();
So sparst Du Dir zumindest den Hilfsstring. Ohne Hilfsvariable wird's schwierig. Und eine andere Möglichkeit kenne ich auch nicht.
Shaggy
-
Danke, genau das hatte ich gesucht.
Devil
-
Tja, da hat jemand die MSDN nicht gelesen, denn
suche.MakeLower(); suche[0] = _totupper( suche[0]);
funktioniert nicht! Der []-operator ist nur-lesend!
Shaggy
-
@Shaggy
Wollen wir demnächst den Fragern auch noch das Essen vorkauen, oder wie schwer ist es, vom ReadOnly-Operator[] auf den Befehl SetAt zu schlussfolgern?
-
Das hab ich auch so rausbekommen :p
Und vorgekautes essen ist nicht so mein fallDevil
-
Die Ausrede ist ja nun wirklich armselig @ReneG ...
-
Wie wäre es, wenn du mit CompareNoCase von CString vergleichst?
-
Das ist ein guter Vorschlag, aber hilft mir nichts.
Da ich mit CString::Find("..", ipos) nach dem suchbegriff suche, und möchte
das ich weitersuchen kann.Devil
-
Original erstellt von <Shaggy>:
Die Ausrede ist ja nun wirklich armselig @ReneG ...Es gibt wichtigeres im Leben als auswendig zu wissen ob der [] Operator beim CString readonly ist... z.B. schnell eingetippte Ratschläge von perfekten Lösungen unterscheiden zu können...
-
Ist ne blöde Idee, aber du könntest ja eigentlich nach "uchbegriff" suchen und dann von Hand prüfen ob davor ein "S" kommt. Das ist dann aber nicht wirklich case-insensitive... Ich würde den String in dem du suchst temporär kopieren, uppercase machen und dann mit nem uppercase-Suchstring arbeiten. Die Position bleibt ja dann im Ursprungsstring die selber...
-
Kloppt euch doch am besten ma <Shaggy> und RenéG!!
Man man man....
Ist doch egal wenn ma einer was falsch macht oder etwas vergisst...dann sollte man den anderen aber nich grad beschuldigen und deswegen down machn.
Helft und ergänzt euch lieber, dann werden die posts kürzer und es gibt keinen streit mehr ....fertig!mfg 5kYw4lKeR