Wir brauchen ein Format _TCHAR * string, und eine Reihe von char * Strings mit args variabler Länge in eine Funktion zu übergeben:Wie konvertiere ich von _TCHAR * nach char *, wenn ich C++ Arrows mit variabler Länge verwende?
char *foo = "foo";
char *bar = "bar";
LogToFileA(_T("Test %s %s"), foo, bar);
:
inline void FooBar(const _TCHAR *szFmt, const char *cArgs, ...) {
//...
}
So kann es wie so genannt werden Offensichtlich wäre eine einfache Lösung, _TCHAR anstelle von char zu verwenden, aber diesen Luxus haben wir leider nicht.
Wir müssen dies mit va_start verwenden, etc, so können wir einen String formatiert werden:
va_list args;
_TCHAR szBuf[BUFFER_MED_SIZE];
va_start(args, cArgs);
_vstprintf_s(szBuf, BUFFER_MED_SIZE, szFmt, args);
va_end(args);
Leider können wir dies nicht verwenden, weil es uns diesen Fehler geben:
Unhandled exception at 0x6a0d7f4f (msvcr90d.dll) in foobar.exe:
0xC0000005: Access violation reading location 0x2d86fead.
Ich denke bin wir müssen unser char * in _TCHAR * umwandeln - aber wie?
, wenn Sie den Luxus mit einem wchar haben * anstelle eines char *, ich glaube, das wäre beheben Sie Problem –
Hmm, leider nicht - das derzeitige System ein Mischmasch von char * und _TCHAR * –
das ist schade ... ist Effizienz ein Thema? Wenn nicht, schauen Sie sich meine Antwort an, es funktionierte für mich –