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 lediglichcout << 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 alsTCHAR 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. ]