Probleme mit char*



  • Sebix schrieb:

    Neues Problem:

    int main()
    {
       char space[32];
       char* text=space;
       cout << "Eingabe:";
       cin >> text;
       if(text=="irgendwas")
       {
           cout << "Richtige Eingabe" << endl;
       }
       return 0;
    }
    

    Wenn ich jetzt in der Eingabe "irgendwas" eintippe, wird die if-Anweisung scheinbar übersprungen. Woran liegt das?

    Gruß,
    Sebastian

    Hi,

    ich könnte Dir jetzt erklären, woran das liegt, aber als (offensichtlicher Anfänger) rate ich Dir gaaaanz dringend, Konrad Rudolphs Tipp zu beherzogen.
    (Hat eigentlich eher "Befehlscharakter")

    Gruß,

    Simon2.



  • Danke. 🙂

    Ich würd gern string verwenden, allerdings versuche ich gerade WinSock zu lernen und da werden eben CStrings erwartet, was die ganze Sache, wie man sieht, etwas komplizierter macht.



  • Sebix schrieb:

    Ich würd gern string verwenden, allerdings versuche ich gerade WinSock zu lernen und da werden eben CStrings erwartet

    das hat doch damit nix zu tun 😉



  • Sebix schrieb:

    Danke. 🙂

    Ich würd gern string verwenden, allerdings versuche ich gerade WinSock zu lernen und da werden eben CStrings erwartet, was die ganze Sache, wie man sieht, etwas komplizierter macht.

    Verwende halt für alles andere String und konvertier nur für die Übergabe an Winsock nach String:

    std::string s = "Blubb";
    // ...
    CString cs(s.c_str());
    


  • Sebix schrieb:

    Ich würd gern string verwenden, allerdings versuche ich gerade WinSock zu lernen und da werden eben CStrings erwartet, was die ganze Sache, wie man sieht, etwas komplizierter macht.

    Wieso das? Die Klasse "CString" aus der MFC bietet in etwa vergleichbare Möglichkeiten mit std::string.

    (und außerdem hast du immer noch die Möglichkeit, von einem std::string auf die darin gespeicherten char* zuzugreifen, um sie z.B. an eine C Funktion weiterzugeben)



  • Konrad Rudolph schrieb:

    std::string s = "Blubb";
    // ...
    CString cs(s.c_str());
    

    na, bisschen viel des guten.
    dann besser gleich bei 'char*' bleiben.



  • Cool, vielen Dank. Jetzt klappt alles so, wie es klappen soll. 🙂



  • Die WinSocks verlangen wie die POSIX-Sockets nur char* bzw. char const*, keine CString-Objekte. Könnte man zwar auch verwenden, aber man kann ja auch auf MFC verzichten, immerhin lässt sich mit einer Hand voll #ifdefs auch portabler Code schreiben. Das Verhalten (verwenden von c_str()) bleibt aber natürlich gleich bei der Übergabe an beispielsweise die send-Funktion.

    @net:
    Wieso sollte man dann besser gleich bei char* bleiben?

    Greetz



  • Vellas schrieb:

    @net:
    Wieso sollte man dann besser gleich bei char* bleiben?

    naja, 3 verschiedene arten von stringobjekten, von std::string nach char* nach CString und wieder zurück usw. finde ich ziemlich albern...



  • Naja ok, aber CString braucht man ja gott sei dank für die Sockets doch nicht und dann sollte man schon auf das c_str() (gibt aber nicht char* sondern char const* zurück) zurückgreifen. Dann sinds auch nur noch 2 Arten und die sollten verkraftbar sein. 🙂

    Greetz


Anmelden zum Antworten