String aus Vector über Iterator-Zugriff in wxString wandeln



  • Servus,

    ich bekomme es nicht hin, einen wxString zu bilden, obwohl die Konsolenausgabe genau der Text ist, den ich in den wxString packen will - was ist falsch?

    // Teile des Vektors in je einer Zeile ausgeben
    			for ( vector<string>::iterator iter = woerter.begin(); iter != woerter.end(); iter++ )
    			{
    				//wxString mystring( wxT( iter ) );
    				//textCtrl->AppendText( wxT( *iter.c_str(), wxConvUTF8 ) );
    				cout << *iter << endl;
    				//cout << mystring <<endl;
    			}
    


  • Ich versuche nun seit geraumer Zeit es endlich ans Laufen zu bekommen, das Problem ist dass ich meinen fertigen String nicht einem wxString zuweisen kann. Entweder ich mache das ohne wxT() dann nörgelt der Compiler, dass dies ambigous ist, oder ich mache das mit wxT() dann nörgelt der Compiler, dass meine Variable innerhalb von wxT() nicht sichtbar im Scope ist.

    // Teile des Vektors in je einer Zeile ausgeben
    			for ( vector<string>::iterator iter = woerter.begin(); iter != woerter.end(); iter++ )
    			{
    				strToPrint += *iter;
    				strToPrint += "\n";
    			}
    
    			// Kontrollanzeige in Konsole - geht
    			cout << strToPrint << endl;
    
    			// Teststring einem wxString zuweisen
    			string teststr = "HAllo Fred";
    
    			// Transfer in anzeigbaren String
    			//wxString strToShow = wxT("Hallo Egon ...."); // geht
    			wxString strToShow = wxT( *teststr );
    
    			// Zeichenfläche neu belegen
    			textCtrl->AppendText( strToShow );
    		}
    


  • Hallo,

    for ( vector<string>::iterator iter = woerter.begin(); iter != woerter.end(); iter++ )
                {
                    strToPrint += *iter;
                    strToPrint += "\n";
                }
    
                // Kontrollanzeige in Konsole - geht
                cout << strToPrint << endl;
    
                // Teststring einem wxString zuweisen
                string teststr = "HAllo Fred";
    
                // Transfer in anzeigbaren String
                //wxString strToShow = wxT("Hallo Egon ...."); // geht
                wxString strToShow(teststr.c_str());
    
                // Zeichenfläche neu belegen
                textCtrl->AppendText( strToShow );
            }
    

    MfG,

    Probe-Nutzer



  • Geht auch nicht:
    call of overloaded ‘wxString(const char*)’ is ambiguous ...



  • http://wiki.wxwidgets.org/Converting_everything_to_and_from_wxString

    std::string to wxString

    std::string stlstring = "Hello world";
    // assuming your string is encoded as UTF-8, change the wxConv* parameter as needed
    wxString mystring(stlstring.c_str(), wxConvUTF8);
    


  • Benutzt Du 2.8? Da finde ich 2.9 viel besser :). Das is quasi 3.0 als RC. Da geht das ohne die ganzen Conversion-Enums...
    rya.



  • Servus,

    ja ich nutze 2.8.x und in einem anderen Forum hat mir das einer mit wxT() etwas genauer erklärt und nun habe ich es verstanden, denke ich, jetzt ist mir auch klar, was dieses komische 'L' bei einigen Fehlermeldungen verloren hatte:
    http://wxforum.shadonet.com/viewtopic.php?p=121178#121178

    Probleme habe ich nun nur, die Konsequenzen meiner Entscheidung, alles wenn möglich in UTF8 machen zu wollen, einzuschätzen.



  • Warum benutzt Du in wxWidgets überhaupt std::string?
    Auf der anderen Seite probier mal 2.9... is viel besser was das konvertieren und nutzen von Strings angeht.
    rya.



  • Scorcher24 schrieb:

    Warum benutzt Du in wxWidgets überhaupt std::string?
    Auf der anderen Seite probier mal 2.9... is viel besser was das konvertieren und nutzen von Strings angeht.
    rya.

    Kann man 2.9 einfach anwenden ohne was am Code zu ändern?



  • Sillo schrieb:

    Scorcher24 schrieb:

    Warum benutzt Du in wxWidgets überhaupt std::string?
    Auf der anderen Seite probier mal 2.9... is viel besser was das konvertieren und nutzen von Strings angeht.
    rya.

    Kann man 2.9 einfach anwenden ohne was am Code zu ändern?

    Es ist rückwärtskompatibel ja. Eventuell sollte man an 1-2 stellen was ändern weil es deprecated ist, aber schau Dir doch einfach das Changelog an und Du kannst doch jederzeit wieder gegen 2.8 linken ;).
    rya.


Anmelden zum Antworten