Mal wieder int->char



  • Hallo,
    eigentlich komme ich aus der Java-Ecke. Probiere mich aber momentan an C++ und habe ziemliche Probleme mit den Strings und Chars.

    Diese Frage wurde sicher öfter gestellt, ich hab auch viele Ansätze die ich gefunden habe ausprobiert aber keiner hat so wirklich funktioniert.

    Zuerst hab ichs mal so probiert:

    int tileCount[1];
    char pathTo[5];
    [......]
    pathTo[0] = "TILE_X"+[b](char)tileCount[0][/b]+"_Y"+[b](char)tileCount[1][/b]+".bmp";
    
    terrainTile[0] = pSceneMgr->addTerrainSceneNode("media/terrain/map/"+pathTo[0]);
    

    Gab folgenden Fehler:

    invalid operands of types `const char*' and `const char[3]' to binary `operator+'|

    Danach habe ich noch mindestens 5 andere Versionen die ich hier gefunden hatte ausprobiert. Ebenfalls hatte ich probiert, das ganze erst zu einem String zu machen und dann mit itoa(); weiterzumachen, dass hat aber alles nicht geklappt.
    Deswegen frage ich euch.

    Könnt Ihr mir da helfen?
    Und nebenbei: Gibt es einen Grund dafür warum die Konvertierungen in c++ so umständlich sind? Zumindest finde ich sie ziemlich kompliziert. In Java war das immer einfacher. Genauso in Delphi und allen anderen Dingen die ich in meinem Leben so angefasst habe.

    Danke,
    Max



  • Tipp: such nochmal



  • Danke, dieser Tipp hat mir seeehr weitergeholfen.

    Ich kanns auch nicht ab wenn die Leute immer das selbe fragen, aber ich habe gesucht und keine Lösung gefunden.
    Es würde mir schon reichen wenn man mir einfach ein Stichwort/Funktionsname gibt.
    Ich erwarte keinen ja vollständigen Code.

    Danke
    Max



  • http://www.c-plusplus.net/forum/viewtopic-var-t-is-39488.html

    Das ist ein Eintrag aus der FAQ, FAQ wie frequently asked questions



  • Ok danke,
    Aber wenn ichs mit

    std::ostringstream

    probiere bekomme ich immer einen String, ich möchte aber einen Char haben.

    wenn ich aber

    sprintf

    benutze bekomme ich trotzdem einen Fehler

    invalid conversion from **char*'** tochar'|

    Auf denselben Fehler komme ich auch wenn ich probiere einen String zu machen und diesen in einen Char umzuwandeln.

    Irgendwas läuft da doch grob verkehrt



  • MettMax schrieb:

    Und nebenbei: Gibt es einen Grund dafür warum die Konvertierungen in c++ so umständlich sind? Zumindest finde ich sie ziemlich kompliziert. In Java war das immer einfacher. Genauso in Delphi und allen anderen Dingen die ich in meinem Leben so angefasst habe.

    Konvertierungen sind gar nicht so kompliziert, wie du denkst. Kompatible Typen können per static_cast umgewandelt werden, wenn man von und zu Text umwandeln will, kann man std::stringstream benutzen.

    Abgesehen davon ist C++ nun mal keine einfache oder besonders anfängerfreundliche Sprache. Wenn du von Java kommst, werden dir wahrscheinlich auch Dinge wie Zeiger zu schaffen machen. Aber da kommt man halt nicht darum herum, wenn man ernsthaft programmieren will 😉

    P.S.: Wenn du C++ programmieren willst, dann lass die Finger von char* , itoa() und Konsorten. Das ist C und C++ bietet sicherere und benutzerfreundlichere Wege ( std::string , std::stringstream ).

    Schau übrigens mal auf www.cplusplus.com nach, das ist eine ziemlich gute Referenz der C++-Standardbibliothek. Sehr viele Funktionen und Klassen sind dort dokumentiert.



  • MettMax schrieb:

    Ok danke,
    Aber wenn ichs mit

    std::ostringstream

    probiere bekomme ich immer einen String, ich möchte aber einen Char haben.

    wenn ich aber

    sprintf

    benutze bekomme ich trotzdem einen Fehler

    invalid conversion from **char*'** tochar'|

    Verwende für pathTo einen std::string. Wenn du eine char* Darstellung von std::string brauchst gibt es dafür std::string::c_str()
    Dein tileCount Array hat übrigens die Größe 1, du greifst jedoch auf den ungültigen Array-Eintrag tileCount[ 1 ] zu. Das geht in Java nicht und in C++ auch nicht.



  • Verwende für pathTo einen std::string. Wenn du eine char* Darstellung von std::string brauchst gibt es dafür std::string::c_str()
    

    Ok, danke. Damit hab ichs hinbekommen.

    [quote="Nexus"]Kompatible Typen können per static_cast umgewandelt werden, wenn man von und zu Text umwandeln will, kann man std::stringstream benutzen. [/quoute]

    Nexus schrieb:

    Abgesehen davon ist C++ nun mal keine einfache oder besonders anfängerfreundliche Sprache. Wenn du von Java kommst, werden dir wahrscheinlich auch Dinge wie Zeiger zu schaffen machen. Aber da kommt man halt nicht darum herum, wenn man ernsthaft programmieren will 😉

    Ja du hast recht ;). Vorallem die Strukturierung von Klassen/Objekten hat mir recht viele graue Haare wachsen lassen. Aber insgesamt gefällt mir C++ besser als Java. Vorallem wegen der -meiner Meinung nach- besseren Performance.

    Naja, also nochmal danke an euch beide.
    Jetzt scheints zu klappen.



  • wenn du mit char array arbeiten willst solltest du dir vll erst noch einmal das kapitel durcharbeiten

    wie schon gesagt ist dein int array zuklein
    und dein char array erst recht es könnte max. 5 elemente fassen
    mit elementen mein ich Buchstaben also chars
    sowie dein + zeichen bei dem zusammenfügen der verschiedenen ketten
    das ist mit c++ über die strings möglich
    bei diesen musst du dir auch keinen kopf über die größe machen


Anmelden zum Antworten