Forum: PC-Programmierung toupper auf stringvariable anwenden


von programm (Gast)


Lesenswert?

Hallo,

Ich habe ein Problem mit dem Datentyp string in C++.

Ich möchte in einem String, den ich eingelesen habe alle Kleinbuchstaben 
durch Großbuchstaben ersetzten. Allerdings bekomme ich vom Compiler die 
Fehlermeldung:"cannot convert std::string to char"

    using namespace std;

    cahr c[100];
    char d[100];



    string ar[10] = {"test"};

    cout << ar <<endl;

    for(int i=0; i<4; i++)
    {
            c[i] = ar[i];
            d[i] = toupper(c[i]);
            ar[i] = d[i];
            }
            cout <<ar <<endl;


Warum ist es nicht möglich ein einzelens Zeichen einer string-variablen 
einer char Variablen zuzuweisen? Und wie mache ich das richtig? Ich habe 
nichts verständliches im Internet gefunden, allerdings scheint das oben 
geschriebene bei manchen zu funktionieren.

von Hermann-Josef M. (hermann-josef)


Lesenswert?

Hallo,

std::string ist ein Container...

string a = "test";

wäre richtig, was Du definiert hast, ist ein Array von string, das erste 
Element hast Du dann mit "test" initialisiert, alle anderen sind leer.

Schau mal was die Methoden data() und c_str() machen...

Weiter wäre

char c = a[3];

erlaubt. Es gibt noch mehr Möglichkeiten, auf die string-Variable 
zuzugreifen.

http://www.cplusplus.com/reference/string/string/

Viel Erfolg
Hermann-Josef

von Klaus W. (mfgkw)


Lesenswert?

Oder gleich den C++-Weg gehen, z.B.:
1
#include <iostream>
2
#include <string>
3
#include <algorithm>
4
#include <cctype>
5
6
7
int main( int nargs, char **args )
8
{
9
    std::string    ar( "Test" );
10
    std::transform( ar.begin(), ar.end(), ar.begin(), std::toupper );
11
    std::cout << ar << std::endl;
12
}

Und bitte:
- nicht dauernd using namespace std nehmen
- die wirklichen Quelltexte einfügen (garniert mit
1
[c]...[/c]
  ) und nicht irgendwas mehr oder weniger Ähnliches abgetippt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.