schweres Problem
-
Hi,
ich komm einfach nicht drauf.
ich schreibe ein managed c++ program, und muss darin einen managed string (unicode) in ein unmanaged char * umwandeln. das krieg ich nicht hin. wenn jemand weiß, wie ich das mal versuchen könnte, dann wäre ich sehr dankbar.Grüße, Jojo
-
Schau dir mal die Methode ToCharArray an.
-
String *s = "kkk"; char *c; c = s->ToCharArray();
Fehler:
error C2440: '=': '__wchar_t __gc[]' kann nicht in 'char *' konvertiert werden
-
vielleicht hilft dir das hier ja weiter:
<der string>.c_str(); //ergibt zeiger auf char-array, nullterminiert
oder:
<der string>.data(); //ergibt zeiger auf char-array(ohne nullbyte)
-
such doch in der msdn nach ner fumktion die strings in char umwandelt...
-
es würde mir weiterhelfen, wenn ich einen unmanaged string bekommen würde, ich krieg aber einen managed string, da gibts die methode nicht.
-
das hauptproblem ist ja die umwandlung aus dem managed code in den unmaged code. und das krieg ich nicht auf die reihe...
-
System::String *s = "c:\\kkk.de"; std::string temp; std::string str = ""; for( int i=0; i<s->Length; i++ ){ temp = (*s).get_Chars(i); str = str + temp; } char *c; c = (char *)str.c_str();
so gehts...
-
Aus MSDN:
Use PtrToStringChars in vcclr.h.
// mcppfaq_string_to_wchart.cpp
// compile with: /clr
#include < stdio.h >
#include < stdlib.h >
#include < vcclr.h >
#using < mscorlib.dll >
using namespace System;int main()
{
String __gc* str = S"Hello";// Conversion to wchar_t* :
const wchar_t __pin* p = PtrToStringChars(str);
printf("%S\n", p);// Conversion to char* :
// Convert wchar_t* to char* using a conversion functionssuch as:
// WideCharToMultiByte()
// wcstombs()
char* ch = (char *)malloc((str -> Length + 1) * 2);
wcstombs(ch, p, (str -> Length + 1) * 2);
printf("%s\n", ch);
}
-
jo, das geht auch. danke.