Laden...

Wie übergebe ich einer Stringvariable den Text einer TextBox?

Erstellt von Bluecaspar vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.723 Views
B
Bluecaspar Themenstarter:in
3 Beiträge seit 2005
vor 18 Jahren
Wie übergebe ich einer Stringvariable den Text einer TextBox?

std::string s1 = textBox1->Text;

So einfach ließ es sich leider nicht lösen. Kann mir jemand sagen wie mans unter c++ richtig macht?

B
Bluecaspar Themenstarter:in
3 Beiträge seit 2005
vor 18 Jahren

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?

1.549 Beiträge seit 2004
vor 18 Jahren

Wir sind ein C# Forum nicht C++!!!!

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

N
4.644 Beiträge seit 2004
vor 18 Jahren

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 ... .

49.485 Beiträge seit 2005
vor 18 Jahren

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

N
4.644 Beiträge seit 2004
vor 18 Jahren

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, ...

4.506 Beiträge seit 2004
vor 18 Jahren

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!”

1.549 Beiträge seit 2004
vor 18 Jahren

Ok die !!!! waren vielleicht etwas übertrieben(bin heute morgen nicht so gut drauf gewesen).

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

B
Bluecaspar Themenstarter:in
3 Beiträge seit 2005
vor 18 Jahren

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?

S
8.746 Beiträge seit 2005
vor 18 Jahren

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).