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 UNICODEDanke für Eure Geduld

-
AlexSnd schrieb:
Oder man benutzt einfach
#define UNICODEDes 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.
-
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.