Filter string für OPENFILENAME Struct
-
Als Beispiel sei hier ein typischer Filter für beliebige bzw. Textdateien genannt:
"All\0*.\0Text\0.TXT\0"Diesen String direkt zu verwenden ist mir etwas heikel, weil man leicht mal ein \0 vergisst oder zuviel hat. Zudem weiss man nicht, ob der Compiler evtl. alles hinter dem ersten \0 wegoptimiert, wenn man den Member lpstrFilter initialisiert.
Daher habe ich um den Aufruf von getOpenFilename einen Wrapper geschrieben, der die Parameter wie Titel, Filter, Initdir für den getOpenFilename Dialog entgegennimmt, in einer statischen OPENFILENAME Struct die Members setzt und dann
beim Aufruf von getOpenFilename den Zeiger auf die statische Struct übergibt.Jetzt würde ich gerne statt dieses Stringmonsters einen Vector<string> verwenden. Der Wrapper soll dann aus dem Vector das Stringmonster mit den \0 an den richtigen Positionen erzeugen.
Wie gehe ich da am besten vor? Ein String Objekt scheint \0 mitten im Member data() nicht zu akzeptieren.
-
MC78 schrieb:
Zudem weiss man nicht, ob der Compiler evtl. alles hinter dem ersten \0 wegoptimiert, wenn man den Member lpstrFilter initialisiert.
Das wird der niemals tun.
MC78 schrieb:
Vector<string>
vector<char>
-
MC78 schrieb:
Ein String Objekt scheint \0 mitten im Member data() nicht zu akzeptieren.
Wie kommst Du darauf?
#include <string> #include <iostream> using namespace std; int main() { string test; test += 'A'; test += '\0'; test += 'B'; cout << "Laenge: " << test.size() << '\n'; cout << "Zeichen: "; for(int i = 0; i < test.size(); ++i) cout << static_cast<int>(test[i]) << ' '; }