2016-07-04 7 views
-1

Beim Ändern von MFC-Formular von anderen geschrieben, mit Visual Studio 2012, stieß ich auf ein Problem.Umgang mit MFC-Formular 'Text' als char-Typ oder reguläre Zeichenfolge

In dem Formular gibt es ein Eingabefeld, das den gesamten Pfad der Datei übernimmt. ex) C:\folder1\test_file.wav Und in dem Code enthält this->tb_path->Text dies.

Das erste Problem ist, dass ich nicht eine Methode, um mit this->tb_path->Text als char* oder char Typ Array verwenden Methoden in string.h

Im Status Quo finden, Code verwendet

system:: String ^fileName = this->tb_path->Text + "_re";

zu ändern der Text, aber das behindert tatsächlich verschiedene Änderungen des Dateipfads. Wie kann ich dieses Problem lösen?

+0

Ich glaube nicht, dass einer Ihrer Sprach-Tags korrekt ist. Ihr Code ist nicht "C", und es ist nicht "C++". – PaulMcKenzie

+1

Verwenden Sie tatsächlich WinForms mit C++/CLI? Was hat MFC mit dieser Frage zu tun? Da die Zeichenfolgen UTF-16 sind, müssen Sie einen Breitzeichentyp verwenden. –

+1

Welcher Typ sind: this, tb_type und Text? – sergiol

Antwort

1

Versuchen

System::String ^fileName = gcnew System::String(this->tb_path->Text + "_re"); 

oder Sie können mir

System::String ^fileName = gcnew System::String(this->tb_path->Text + _T("_re")); 

Es scheint, sein nicht eine erforderliche Zuordnung im Speicher mit gcnew tun, ein dann Sie Müll in Ihrem String aus nicht initialisierten Speicher erhalten.

+0

Würde der Operator + nicht die Zuweisung für Sie vornehmen? Sie erstellen gerade eine neue Kopie des String-Objekts, das aus der Verkettung resultiert. –