Stringübergabe von JAVA nach C++



  • Hi,
    hast du mal probiert des mit cout einfach auf der Konsole auszugeben?
    Nur um Fehler bei der Messagebox auszuschließen.
    Bist du sicher daß das \n und net \0 (C++ String-Ende-Zeichen) ist.

    Gruß Threaddy



  • Threaddy schrieb:

    Hi,
    hast du mal probiert des mit cout einfach auf der Konsole auszugeben?
    Nur um Fehler bei der Messagebox auszuschließen.

    Einen Fehler bei der MessageBox kann ich ausschliessen, denn
    das geht :

    char* text = "12345";
    MessageBox ( (  0, text, MB_OK, MB_ICONINFORMATION );
    

    Threaddy schrieb:

    Bist du sicher daß das \n und net \0 (C++ String-Ende-Zeichen) ist.

    Irgendiwie bin ich heute nicht gut drauf, ich meinte natürlich (C++ String-Ende-Zeichen), also \0 😕

    Gruss
    Alex



  • Hi AlexSnd,

    Java schickt Unicode (16-Bit) ab und du empfängst char (8-Bit).
    Daran liegt das. Denk dir was aus!

    Jockelx



  • Hm,
    stimmt. Des wird's wohl sein.
    Würde dann in java einfach n char[] draus machen.

    Gruß
    Threaddy



  • Threaddy schrieb:

    Würde dann in java einfach n char[] draus machen.

    Oder man benutzt einfach

    #define UNICODE
    

    Danke für Eure Geduld 😃



  • AlexSnd schrieb:

    Oder man benutzt einfach

    #define UNICODE
    

    Des kannt ich jetzt noch nicht. Wieder was gelernt 🙂
    Geh mal davon aus daß es jetzt funzt.

    Gruß Threaddy



  • Threaddy schrieb:

    Geh mal davon aus daß es jetzt funzt.

    Ja es funzt, Unicode muss eingeschaltet sein und der Text als LPCTSTR declariert werden.

    Gruss
    Alex



  • Hi,

    habe hier mal meinen alten Thread ausgegraben, weil ich wieder ein ähnliches Problem habe.

    Diesmal geht es aber um die Rückgabe eines String von C++ nach Java.
    Wie funktioniert das ? Ich habe schon viele Möglichkeiten probiert, aber bestenfalls kommt Mühl an, meisten schmiert das Programm ab 😞

    Danke
    Gruss
    Alex



  • PuppetMaster2k schrieb:

    C++ kennt std::string. Eine Klasse die das Äquvivalent zu String in Java darstellt 🙂

    Wenn schon std::wstring. Java Strings sind Unicode, und std::string ist es nicht.



  • @AlexSnd:

    Du musst das Ding irgendwie als byte[] in dein Java-Programm kriegen. Daraus kannst du dann den java.lang.String konstruieren, wenn du die Zeichenkodierung kennst.
    Wovon genau die Zeichenkodierung des std::strings abhängt, versuch ich noch rauszufinden. Wenn ich meinen Quelltext als UTF-8 abspeichere, hat der std::string für ein Ü zwei Zeichen. Also hängt es vielleicht von der Kodierung des Quelltexts ab und der C++-Compiler übernimmt einfach die Bytes, die so kommen. Wahrscheinlich ist UTF-8 dann die beste Wahl, ohne BOM müsste das auch ein dummer C++-Compiler bearbeiten können.

    Wenn du nen wstring hast, ist sowieso gar nichts mehr sicher, ne plattformunabhängige Lösung kriegst du dann nicht her. Beim VC++ wäre es ein UTF-16 String. Die Vorgehensweise in Java wäre die selbe, byte[] daraus machen und mit UTF-16 String erstellen. Ich würde nicht empfehlen, die 16-Bit chars direkt in Java unverändert zu übernehmen, weil Java die binäre 0 speziell kodiert.


Anmelden zum Antworten