私たちは、可変長引数を持つ関数に文字列*フォーマット_TCHAR *文字列を渡す必要があり、チャーの数:C++の可変長引数を使用する場合、どのように_TCHAR *をchar *に変換するのですか?
inline void FooBar(const _TCHAR *szFmt, const char *cArgs, ...) {
//...
}
だから、そうのように呼び出すことができます。
char *foo = "foo";
char *bar = "bar";
LogToFileA(_T("Test %s %s"), foo, bar);
明らかに、単純な修正はcharの代わりに_TCHARを使用することですが、残念なことにその贅沢はありません。
私たちは、私たちは、文字列の書式を設定することができますなど、va_startマクロでこれを使用する必要があります。それは私たちに、このエラーを与えるため
va_list args;
_TCHAR szBuf[BUFFER_MED_SIZE];
va_start(args, cArgs);
_vstprintf_s(szBuf, BUFFER_MED_SIZE, szFmt, args);
va_end(args);
残念ながら、我々はこれを使用することはできません。
Unhandled exception at 0x6a0d7f4f (msvcr90d.dll) in foobar.exe:
0xC0000005: Access violation reading location 0x2d86fead.
私は考えています私たちはchar *を_TCHAR *に変換する必要がありますが、どうですか?
あなたが代わりのchar *のwchar文字を使用しての贅沢*を持っている場合、私はうーん、残念ながらない –
あなたの問題を解決するだろうと思う - 現在のシステムは –
*のchar *と_TCHARのミッシュ - マッシュですそれはあまりにも悪い...効率は問題ですか?そうでない場合は、私の答えを見て、それは私のために働いた –