LPCTSTR strings



  • Hi!
    Ich möchte zu LPCTSTR strings in einem char array speichern und dann mit diesen Strings weiterarbeiten, aber wie mache ich das?
    Mein Ansatz war, dass, nachdem der cast LPCTSTR einen zeiger auf ein const char objekt zurückliefert, einfach ein const char* array zu definieren und dort die LPCTSTR-Zeiger zu speichern, in Code-Form:

    const char* pointerarr[15]
    for(int i=0;x;i++)
    { x=finder.FindNextFile();
    cout<< (LPCTSTR) finder.GetFileName()<<endl;
    pointerarr[i] =(LPCTSTR)finder.GetFileName();
    }

    Wenn ich dann allerdings versuche, die Namen im pointerarray wieder auszugeben, bekomme ich einen riesenblödsinn..

    ich möchte mit den gefundenen Dateinamen weiterarbeiten, hat jemand eine Idee, wie ich sie so speichern könnte, dass ich sie wieder abrufen kann?

    lg,
    Iso



  • nimm am besten std::string, ist einfacher und sicherer, vor allem falls das wort groesser ist als 14 zeichen {o;

    std::string fileName;
    while(finder.FindNextFile()) {
        fileName = finder.GetFileName();
        std::cout << fileName << std::endl;
    }
    

    kannst auch die strings in ne liste packen, dann hast du ne schoene solide basis - besser als stumpfe pointer



  • x=finder.FindNextFile();
    cout<< (LPCTSTR) finder.GetFileName()<<endl;
    pointerarr[i] =(LPCTSTR)finder.GetFileName();
    

    Das ist unschön, denn wenn FindNextFile() false zurückliefert, wird trotzdem noch ein Eintrag in pointerarr gemacht.

    Besser so etwas:

    std::vector<CString> files; // oder std::list<CString>
    while (finder.FindNextFile())
        files.push_back(finder.GetFileName());
    


  • Nein, er macht das mit FindNextFile schon richtig.

    CFileFind::FindNextFile
    false bei: Diese Datei ist die letzte

    ::FindNextFile
    false bei: Es gibt keine Datei mehr


Anmelden zum Antworten