003
21.11.2011, 12:28 Uhr
banshee
|
Stimmt auf die Idee von deadbeef hätte ich auch kommen können Wie eine unicode-konforme Lösung aussehen würde, frage ich jetzt mal nicht Ich kann leider nicht überall wchar/wstring nutzen, weil ich einmal ne Funktion aus opencv aufrufe, die zwangsläufig einen const string erwartet, d.h. mindestens 1x muss ich konvertieren.
Ich habe aber wie immer ein weiteres Problem, das ich bisher nur extrem unschön lösen kann:
C++: |
// hier kommt ein Verzeichnisname rein in dem ich alle Dateien lesen will void foo(char* dirName) { WIN32_FIND_DATA wfd; // hier brauche ich dann dirName + "\\*" als regulären Ausdruck zur Suche // Problem ist aber dass strcat den ursprünglichen String manipuliert HANDLE hFind = FindFirstFile(strcat(dirName,"\\*"), &wfd); FindNextFile(hFind, &wfd);
while(FindNextFile(hFind, &wfd)) { if(wfd.dwFileAttributes & !FILE_ATTRIBUTE_DIRECTORY) { // Hier brauche ich jetzt dirName (ohne die regex von oben) + wfd.cFileName readImg(wfd.cFileName); } }
FindClose(hFind); }
|
Ich könnte also einfach dirName in einem neuen char* kopieren, damit das Argument nicht manipuliert wird aber jedesmal wenn ich in der if-Anweisung eine Datei lese, mache ich dann ja wieder strcat(dirName_copy, wfd.cFileName) und ich habe das gleiche Problem wieder, ich müsste also nach jedem Durchlauf wieder eine neue Kopie von dirName anlegen. Ich suche da nach dem Java-Weg, einfach dirName + "abc" machen zu können und jedesmal ne Kopie anzulegen erscheint mir ziemlich hacky zu sein. |