Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

11.01.2010, 20:44

String in Großbuchstaben verwandeln

Momentan gehe ich jedes element durch und probiere es in int zu casten, falls es größer als groß A ist 32 abzuziehen und dann das ganze in char zurückzucasten.
Will aber mit dem STL String noch nciht so recht: Es stürtzt ab
Gewinnen ist, wenn man einmal mehr aufsteht, als man zu Boden geht.

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

2

11.01.2010, 20:45

zeig mal ein bisschen code ;)

3

11.01.2010, 20:49

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <string>

using namespace std;

int main(int Arg, char Args[])
{ 
    //deklarieren des Strings

    string sString;

    //Befüllen des Strings

    cin >> sString;

    //Einzelne Stellen durchzählen, i als Iterator

    for(int i = 0; i < static_cast<int> (sString.length()); i++)
    {

        //Ist der Buchstabe klein?

        if(static_cast<int> (sString[i]) > 65)
        {
            //Ja dann groß machen

            sString[i] = (char)((int)(sString[i])-32);
        }
    }
    
    //Auf Enter zum schließen warten

    cin.get();
}
Gewinnen ist, wenn man einmal mehr aufsteht, als man zu Boden geht.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

11.01.2010, 20:52

@Flonk: Gar nicht gut! Das funktioniert so einfach nicht. Es würden auch Zeichen umgewandelt, die gar keine Buchstaben sind.

Für sowas gibts die Funktionen "toupper" und "tolower".
Kombiniert mit std::transform hast du den ganzen String dann schnell verändert.

Siehe hier:
http://www.c-plusplus.de/forum/viewtopic-var-t-is-210176-and-start-is-0-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-.html

idontknow

unregistriert

5

11.01.2010, 20:56

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
void ConvertToBigLetters(std::string& s)
{
    for(unsigned i = 0; i < s.length(); i++)
    {
        if(s[i] >= 97 &&// ascii a

           s[i] <= 122) // ascii z

        {
            s[i] -= 32;
        }
    }
};


Kurz hingecodet, mehr schlecht als recht, höre lieber auf den Captain :D.

Btw: Bist du dir sicher, dass es abstürzt und sich nicht einfach direkt beendet?

edit: Dein COde past an für scih schon und stüzrt auch nicht ab, wie vermutet, es fehlt nur a) eine Ausgabe und b) Durch das cin wird aus Gründen die ich nicht kenne dein cin.get() ebenfalls "aktiviert" und dadurch beendet sich das Programm sofort, läst sich sehr unschön mit 2x cin.get() abfangen!

Weiß jemand warum das so ist?

Werbeanzeige