Ja, generell solltest du die Unterscheidung zwischen Widechar (wie auch immer du es nennen willst) und Ascii machen. Sowohl der normale std::string, wie auch das std::cout sind ausschließlich Ascii. Heißt ein Byte pro Zeichen. Widechar bedeutet zwei Byte pro Zeichen (damit lassen sich dann natürlich auch exotischere Zeichen darstellen).
Das
Code:
(LPCWSTR)(fullPath + "*.log").c_str()
und
Code:
cout << "Directoryname is " << findData.cFileName << endl;
recht sinnlos sind, sollte eigentlich klar sein (Mix von Ascii und Widechar). Und was das Dereferenzieren soll, ist mir auch nicht ganz klar. Dass dort aber 0xCCCC rauskommt, wundert mich nicht. Ich vermute, dass schon FindFirstFile fehlgeschlagen ist (weil halt das erste Argument Müll ist), aber da gibt es ja keinen Check, der das abfängt. Der cFileName-Member der Struktur ist mit der Projektkonfiguration bzw. den benutzten Defines ebenfalls Widechar, da die entsprechenden W-Strukturen aus Windows benutzt werden statt die A-Strukturen.
Möglichkeiten:
1) Alles Widechar. Statt std::string dann std::wstring und statt std::cout dann std::wcout nutzen. Weiterhin, wie aktuell auch, die Widechar-Funktionen der Winapi nutzen.
2) Alles Ascii. std::string und std::cout bleiben und entweder du stellst in den Projekteinstellungen irgendwo von "Unicode" auf "Multibyte" oder benutzt ganz explizit die A-Versionen der Funktionen und Strukturen (FindFirstFileA, WIN32_FIND_DATAA, etc.).
Mit freundlichen Grüßen
Jeoni