vector<string> zugriffsprobleme



  • also so sieht mein code aus:

    typedef std::vector<std::string> StringVector;
    StringVector strvect;
    
    ...
    
    char tmp[100];
    std::string st = "";
    
    wsprintf(tmp,"%u=%s",dwPID,szProcess);
    st = tmp;
    strvect.push_back(st);
    

    damit füll ich meinen vector, das funktioniert auch, aber wenn ich jetzt mit
    strvect[0] auf das element darin zugreifen will, dann stürzt mein programm immer ab...

    hab auch das forum durchsucht, allerdings hab ich mir die lösung nicht zusammenschnippeln können. wäre über hilfe echt dankbar 🙂



  • Passiert zwischen dem Zugriif über strvect[0] und dem strvect.pushback() noch etwas? Wie sieht der Zugriff genau aus? Poste doch am besten nochmal etwas Code!
    Ist das Chararray tmp wirklich korrekt gefüllt und der String st enthält den richtigen Wert? Schon im Debug Modus analysiert?

    Sorry, ich sehe den Fehler grade auch nicht.



  • printf("prozess count %i\n",strvect.size());
    
    for(int i=0; i<strvect.size(); i++) {
    	std::cout << strvect[i] << "\n";
    }
    

    so klappt das wunderbar, nur muß ich in der schleife dann die werte mit anderen vergleichen, so in der art:

    strstr(strvect[i],"smss.exe")
    

    und da schepperts dann mit dieser meldung:
    error C2664: 'strstr' : Konvertierung des Parameters 1 von 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' in 'const char *' nicht moeglich



  • Liegt wohl daran, dass die Funktion strstr einen const char* erwartet, die ihr aber einen String gibst.

    Versuchs mal mit:

    strstr(strvect[i].c_str(),"smss.exe");



  • Fluxx schrieb:

    Liegt wohl daran, dass die Funktion strstr einen const char* erwartet, die ihr aber einen String gibst.

    Versuchs mal mit:

    strstr(strvect[i].c_str(),"smss.exe");

    Wops 🤡 Falsch.

    strstr -> suche nen String im String ?

    strvect[i].find("smss.exe");



  • @Knuddlbär:

    Schon klar, so hätt ichs auch gemacht ;). Ich kenn die von eric_sun gepostete Funktion auch nicht, aber einfach anhand seiner Fehlermeldung, hab ich abgeschätzt, das sein Problem dabei liegen wird, dass er eine string klasse statt einem cstring übergeben hat. Über den Sinn der Verwendung dieser Funktion (gibt es die überhaupt?!) hab ich mir gar keine Gedanken gemacht, das überlasse ihci hm.

    Grüße



  • Hi!

    Ja sagt ja auch niemand was dagegen 🤡 Die Korrektur war ja auch richtig. Wollte ja nur mal std::string::find erwähnt haben 🤡



  • Knuddlbaer schrieb:

    Hi!

    Ja sagt ja auch niemand was dagegen 🤡 Die Korrektur war ja auch richtig. Wollte ja nur mal std::string::find erwähnt haben 🤡

    OK 😃

    std::string::find wird wohl auch besser sein 🙂



  • danke euch beiden 🙂
    ich hab bei der ganzen sache nur ganz falsch gedacht, schon weil ich noch nie mit string gearbeitet hab. so im nachhinein finde ich die lösung mit find natürlich auch ziemlich gut 😃


Anmelden zum Antworten