Frage zu STL - string vector



  • Hallo!
    Ich habe folgenden Code als Konsolenanwendung geschrieben:

    int main() 
    {
        vector<string> v;
    
        //--> hier ist eigentlich eine Funktion, die mir den Vektor füllt
    
        for(UINT nCount = 0; nCount < v.size(); nCount++) 
        {
            cout << v.at(nCount) << endl;
        }
    
        return 0;
    }
    

    Der Inhalt des String-Vector "v" wird komplett in der Konsole ausgegeben. Da ich das ganze in eine GUI einbinden möchte, ersetze ich die for-Schleife zur Ausgabe des vector-Inhalts durch:

    for(UINT nCount = 0; nCount < v.size(); nCount++) 
        {
        wsprintf( szBuffer, "%s\r\n", v.at(nCount) );
        SendMessage( hEdit, EM_REPLACESEL, (WPARAM)0, (LPARAM)szBuffer );
        }
    

    Sprich der Inhalt wird hier nicht auf der Konsole ausgegeben, sondern soll in einem Edit-Fenster ausgegeben werde. Leider bleibt mein szBuffer leer und es wird nichts ausgegeben. Was mach ich falsch bei der Umwandlung?
    Ich hab lediglich

    cout << v.at(nCount) << endl;
    

    durch

    wsprintf( szBuffer, "%s\r\n", v.at(nCount) );
        SendMessage( hEdit, EM_REPLACESEL, (WPARAM)0, (LPARAM)szBuffer );
    

    ersetzt.
    szBuffer ist übrigens als

    TCHAR szBuffer[100];
    

    deklariert.

    DANKE

    Gruss Uwe



  • in der schleife (UINT bla = 0; bla < vec.size(); ++bla) vec.at(bla)
    ist das vec.at() überflüssig, du brauchst hier ja keine bereichsprüfung, da "bla" niemals außerhalb der grenze ist (bla < vec.size()). Benutze hier vec[bla]

    und zum C-String konvertieren benutze
    SendMessage (..., (LPARAM)vec[num].c_str());



  • btw. was du falsch machst:
    wsprintf (bla, "%s\n", vec[x])


    wsprintf ist eine C-Funktion und kennt kein "string". es würde einen C-String erwarten.
    Es ginge also auch so (mit wsprintf):
    wsprintf (szBuffer, "%s\r\n", vec[x].c_str());
    bzw. du benutzt C++ stringstreams.



  • Klappt prima. 🙂

    Vielen vielen Dank!

    [ Dieser Beitrag wurde am 27.03.2003 um 14:45 Uhr von Quintana editiert. ]


Anmelden zum Antworten