if und char*



  • Wie werden if-Abfragen auf ein char* durchgeführt.

    Bei einem std::string geht es ja folgendermaßen:

    if (aAbfrage == "Martin") //aAbfrage = std::string
    {
    //tue das
    }

    Wenn ich aber ein char* bAbfrage habe, wie läuft es da?

    Danke!



  • strcmp (ANSI C) benutzen oder in einen std::string umwandeln.



  • Hallo!

    Ich habe viele Diskussionen verfolgt, was die Umwandlung von einem
    char* in einen std::string anbelangt.

    Eine Umwandlung wäre ein umcasten, und das wäre fatal, weil irgendwann unerklärliche Abstürze stattfinden würden.

    Mein char* ist ja schließlich auch kein const char*

    Drum hatte ich mir gedacht, ich bleibe bei dem char* und baue meine If-Abfragen auf char* auf, obwohl ich nun inzwischen weiß, daß es reichlich schwerer zu programmieren sein soll mit char*, als mit std::string. Denn die if-Abfragen mit char* und dem strcmp sind doch so ne Sache...

    Ich stehe momentan wirklich auf dem Schlauch! Und es geht einfach nicht weiter voran.

    Bin für Anmerkungen und Tips dankbar, wie man aus diesem Dilemma herauskommt.

    Danke!



  • Casten wäre fatal, das stimmt. Aber warum nicht den Konstruktor von std::string nutzen?

    char* pC = "Hallo";
    std::string str(pC);
    

    Funzt doch...

    [ Dieser Beitrag wurde am 05.07.2003 um 11:54 Uhr von MaSTaH editiert. ]



  • BTW: Guck doch in deine Hilfe unter strcmp oder such im Forum. Ist wirklich nicht so schwer und du sparst dir das Umwandeln in einen std::string.



  • Original erstellt von <PS>:
    **
    Mein char* ist ja schließlich auch kein const char*
    **

    eigentlich schon:

    char *x = "Hello World";
    x[1]='a';
    

    mit glück stürzt dein programm ab, da "Hello World" uU im Readonly Bereich deines Programms liegt.
    daher verwendet man in diesem speziellen fall:

    char x[] = "Hello World";
    x[1] = 'a';
    

    das ist erlaubt.
    Das mit dem char* ist ein Überbleibsel und du solltest in C++ heute nur noch const char *bar = "Was auch immer" verwenden.

    das mit dem casten vom C-String in std::string versteh ich nicht ganz: Wo liegt dein Problem?
    Brauchst du einen char * und keinen const char * beim zurückwandeln von std::string nach C-String?
    Verwende entweder strcpy oder konvertier den zweiten char* auch nach std::string.

    [ Dieser Beitrag wurde am 07.07.2003 um 00:04 Uhr von davie editiert. ]


Anmelden zum Antworten