std::string s1 = textBox1->Text;
So einfach ließ es sich leider nicht lösen. Kann mir jemand sagen wie mans unter c++ richtig macht?
Habs geschafft:
System::String __gc * s1 = textBox1->Text;
nur hab ich später noch ein Problem bekommen.
char *c1 = new char [];
strcpy(c1, *s1.c_str());
Darauf hin meint er, dass der linke Teil von .c_str() eine Klasse/Struct/Union sein müsste
was nu?
Wir sind ein C# Forum nicht C++!!!!
Wir Arbeiten eigendlich nicht wir nehmen nur das geld
Original von S.H.-Teichhof
Wir sind ein C# Forum nicht C++!!!!
Und? Darf er deswegen keine Fragen zu C++ bzw. mC++ stellen?
--> Ich verschieb Dich mal nach Rund um ... .
Hallo Noodles,
es gab ja schon verschiedenen Fragen zu C++, die aber meistens im Zusammenhang mit C# standen (z.B. wie kann ich von C# auf eine C++ DLL zugreifen und umgekehrt). Soweit ich ich das sehe, fehlt dieser C++-Frage aber genau dieser Bezug. Insofern finde ich den Hinweis S.H.-Teichhof schon berechtigt.
Ich würde jetzt gerne auf ein C++ Forum verweisen. Ich weiß auch, dass das schon verschiedentlich erfolgt ist. Nur finde ich diese Threads gerade nicht und habe auch selbst leider kein (gutes) parat.
herbivore
Finde ich nicht, wenn er die Frage hier beantwortet bekommt ist das ok. In diesem Falle hat er es ja noch slbst gelöst. Es besteht aber kein Grund ihn deswegen zu anzufahren -> '!!!!'.
Rund um die Programmierung
Sicherheit, Entwurfsmuster, andere Sprachen, ...
Hallo Bluecaspar!
Die Fehlermeldung ist klar! *s1.c_str() kann so nicht funbktionieren. Die Methode c_str() kann nicht auf einen Zeiger ausgeführt werden, da der Rückgabewert Konstant werden soll.
Ich würde hier für das Kopieren eines Strings in ein char-Array sowieso nur sprintf nehmen.
Das sähe dann so aus:
char *c1 = new char [];
sprintf(c1, s1.c_str());
Eventuell muss hier noch eine Längenangabe als Parameter für sprintf mit angegeben werden, da ich aber keine Doku für C++ hab, musste ich im Gedächtnis kramen (und das war lang, lang her 😉
Ciao
Norman-Timo
A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”
Ok die !!!! waren vielleicht etwas übertrieben(bin heute morgen nicht so gut drauf gewesen).
Wir Arbeiten eigendlich nicht wir nehmen nur das geld
Stimmt ja, das mit dem * ist auch falsch. Hatte das auch nur mal so ausprobiert, blöd wie ich war hab ich das dann auch noch hier so gepostet.
char *c4 = new char [];
strcpy(c3,s1.c_str());
wenn ichs so hab, gibt er mir den Fehler aus. und mit:
char *c1 = new char [];
sprintf(c1, s1.c_str());
gibt er mir leider noch immer den selben Fehler aus.
übrigens was tut die spintf-Methode überhaupt. Ich will doch einen String in einen char-array einlesen. Ist das mit dieser ebenso?
Ohne Parameter funktioniert sprintf() im Prinzip genauso wie strcpy() (nur langsamer). Du hast aber die Möglichkeit den Quellstring mit Parametern zu versehen:
sprintf(ziel,"Die ist die Zahl %d und der Text '%s'",meineZahl, meinString)
Ist also - wie unter .NET - eine elegante und schnelle Methode das Zusammenbasteln von Strings zu vereinfachen.
Ansonsten: Wenn du mit new den Speicher für den String allokierst, solltest du noch eine Größe angeben. Und immer schön auf die Größe achten: Unmanaged Code, kannst wunderbar Speicher überschreiben. Das bringt beim Debugging richtig Spass. 🙂
Generell solltest du überlegen, ob du nicht auf die C++-Strings der STL ausweichst. Da musst du dich um die Größe nicht mehr kümmern. Zumal Char-Arrays dich bei Unicode (das ist unter .NET Standard) nicht wirklich weiterbringen werden. Hier musst du ein wchar-Array einsetzen (inkl. der entsprechenden Funktionen).