Inhalt einer Textbox in string variable lesen C++



  • Hey leute,

    ich habe folgendes Problem:

    Dieser Code:

    private: System::Void button1_Click(System::Object^sender,System::EventArgs^e)  			 {
    	this->tabControl1->SelectedIndex=1; //Tab_2 aufrufen (via index)
    		String ^ temp = textBox1->Text;
    		 }
    

    soll nach einem Button click, tab 2 öffnen und dann aus einer textbox in einen string lesen...

    Was nicht funktioniert, ist das letztere.

    String ^ temp = textBox1->Text;
    

    Ich bekomme folgende Fehlermeldungen:

    Fehler 1 error C2872: 'String': Mehrdeutiges Symbol 174

    Fehler 2 error C3699: "^": Diese Referenzierung kann nicht für den Typ "String" verwendet werden. 174

    Fehler 3 error C2440: 'Initialisierung': 'System::String ^' kann nicht in 'String *' konvertiert werden 174

    Wenn ich einfach folgendes tue (wie es mir am liebsten wäre):

    string n = this->textBox1->Text;
    

    bekomme ich folgende Fehler:

    Fehler 1 error C2440: 'Initialisierung': 'System::String ^' kann nicht in 'std::basic_string<_Elem,_Traits,_Ax>' konvertiert werden 174

    mfg



  • Schreib mal das:

    System::String ^ temp = textBox1->Text;
    

    Indem Du den String voll-qualifizierst, beseitigst Du die Mehrdeutigkeit.

    Wenn ich einfach folgendes tue (wie es mir am liebsten wäre):

    string n = this->textBox1->Text;
    

    Unter der Annahme, dass n ein std::string ist:
    Davon halte ich gar nicht viel. Wenn Du C++/CLI benutzt (was, besonders im Zusammenhang mit Windows Forms, sehr fragwürdig ist) solltest Du auch die Typen aus dem .NET Framework benutzen. So umgehst Du zahlreiche Fallstricke und Probleme.

    Natürlich wäre es noch besser entweder C++ (native) oder gerade C# (.NET) zu programmieren. C++/CLI ist für Interop zwischen diesen Welten da - nicht um Applikation zu schreiben.



  • Danke für die Antwort,

    gibt es eine Möglichkeit, einen vectorSystem::String^ zu erstellen ?
    Mein Compiler gibt folgende Meldung aus, und verhindert dies:

    error C3699: "&&": Diese Referenzierung kann nicht für den Typ "System::String ^" verwendet werden.

    Wenn das nicht geht, könnte man ja auch einfach einen System::String^ in einen std::string umwandeln und daraus dann einen vector machen. Ist diese konvertierung in beide Richtungen möglich?



  • Der äquivalente Typ zu std::vector<..> ist System::Collections::Generic::List<..>

    List<..> in MSDN: http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx

    Ich rate Dir C++ und C++/CLI nicht zu mischen, wenn Du nicht weisst was Du tust - und es macht leider den Anschein, das dem so ist.


Anmelden zum Antworten