String array zurückgeben



  • Hallo zusammen,

    ich habe eine Funktion geschrieben, die einen String auseinanderparst.

    CString *parser(char *str)
    {
    ...
        CString *strSearchWords[4];
    ...
        return strSearchWords[4];
    }
    

    ich will nun nachdem diese funktion aufgerufen wird einen String-Array zurück geben. Nur schaffe ich das irgendwie nicht. 😞
    Was gibt es sonst noch für Möglichkeiten einen String-Array zurückzugeben?

    Thx schonmal im voraus!



  • Hallo

    Benutzt doch einfach die Klasse CStringArray.

    chrische



  • Du hast dort ein Array mit 4 CString-Pointern angelegt - die haben die Indizes 0 bis 3. strSearchWords[4] gehört nicht mehr zu deinem Array.



  • Also ich hab das jetzt so gemacht:

    CStringArray parser(char *str)
    {
        CStringArray strSearchWords;
        strSearchWords.SetSize(4);
    
        ...
        // füllen
        strSearchWords.SetAt(0, buf2);
        ...
    
        return strSearchWords;
    }
    
    int main()
    {
        CStringArray array;
        array.SetSize(4);
        array = parser(buffer);
    
        return 0;
    }
    

    Also irgendwas mach ich noch falsch? Ich komm einfach nicht drauf. Hier sind die Compilerfehler:

    test.cpp
     WINVER not defined. Defaulting to 0x0501 (Windows XP and Windows .NET Server)
    test.cpp(64) : error C2558: class 'CStringArray' : no copy constructor available or copy constructor is declared 'explicit'
    test.cpp(79) : error C2582: 'operator =' function is unavailable in 'CStringArray'
    

    danke für die antworten.



  • CStringArray ist afaik nicht kopierbar, also kannst du es höchstens per Referenz herumreichen:

    void parser(const char* text,CStringArray& result)
    {
      result.SetSize(4);
      ...
    }
    
    CStringArray array;
    parser(buffer,array);
    

    (oder noch besser, du nutzt Standard-Mittel: std::vector<std::string> )



  • Hallo

    CStoll schrieb:

    [/cpp](oder noch besser, du nutzt Standard-Mittel: std::vector<std::string> )

    Wenn man mit den MFC arbeitet ist das imho nicht immer besser, weil es dann schon Sinn macht, auch mit den angebotenen Klassne zu arbeiten.

    chrische


Anmelden zum Antworten