toupper auf stringvariable anwenden

Gast #2387868
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.
#2387880
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
#2387926
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren