VC++ .NET Strings zusammensetzen
-
mach mal das * weg
-
Danke erstmal.
Ich kann das jetzt nicht testen, hab auf der Arbeit nur VC++ 6, werde es aber heute Abend zu Hause versuchen.
Hast du das schon getestet? Weil ich glaube ich hatte das schon mal versucht und da kamen trotzdem Fehlermeldungen...
-
^^ habe leider auch nur VC++6 auf der Arbeit
Sollte aber gehen
-
CMatt schrieb:
mach mal das * weg
Das funktioniert nicht, soweit ich weiß kann man in mC++ keinen + Operator zur Stringverkettung verwenden.
So funktioniert es:
System::String *text1 = "Hallo "; System::String *text2 = "Welt!"; System::String *ausgabe = String::Concat(text1, text2); System::Windows::Forms::MessageBox::Show(ausgabe);
-
Stimmt, hab mir gerade mal in der MSDN String::Concat angeschaut, das scheint genau das zu sein was ich suche.
Vielen Dank euch beiden
-
Hi,
wenn du im voraus weist, dass du strings zusammen fügen musst, benuzte am besten StringBuilder ( System::Text ). Denn ein weitere Grund ist, dass Stringverkettung ziemlich langsam ist.BSP:
StringBuilder *builder = new StringBuilder( "Hello" ); builder->Append( " " ); builder->Append( "World" ); Console::WriteLine( builder->ToString( ) );
-
Hi!
Ellek schrieb:
Guten Tag,
String *Text1 = "Hallo, "; String *Text2 = "Welt!"; String *Ausgabe = Text1 + Text2;
Mach mal folgendes:
String *Text1 = "Hallo, "; String *Text2 = "Welt!"; String *Ausgabe = Text1->Insert(Text1->Length, Text2);
Die System::String-Insert-Methode fügt in den aufrufenden String den String in der Parameterliste an einer bestimmten Position ein, dabei wird allerdings nicht das aufrufende Objekt verändert, sondern ein neuer System::String* geliefert.
Code-Hacker
-
Gut, das sind ja jetzt schon drei verschiedene Möglichkeiten dieses Problem zu lösen.
Welche von den Lösungen wäre denn in Sachen Performance am optimalsten?
-
Hi!
Jo, Noodles Concat-Methode ist mir so eben auch in den Sinn gekommen. Es sollte denke ich die Concat-Methode sein, die am effizientesten ist. Wobei ich in MS-Beispielen daunernd die Insert-Methode (von mir) sehe.
Wenn du Strings sehr häufig verändern musst, dann ist dir zu System::StringBuilder-Klasse zu raten.
EDIT: Achja, der +-Operator ist in mC++ nicht möglich:
c:\.........\Form1.h(232): error C2845: '+': Zeigerarithmetik kann nicht an einem __gc-Zeiger 'System::String __gc *' durchgeführt werden
Code-Hacker
-
Ellek schrieb:
Welche von den Lösungen wäre denn in Sachen Performance am optimalsten?
Die mit dem StringBuilder.
Bei solchen kleinen Textoperationen merkt man das nicht, aber wenn es dann größere Sachen werden ist der StringBuilder wesentlich schneller.