我们需要将一个格式为_TCHAR*的字符串和一些char *字符串传递到一个具有可变长度参数的函数中:
inline void FooBar(const _TCHAR *szFmt, const char *cArgs, ...) {
//...
}
因此,它可以这样称呼:
char *foo = "foo";
char *bar = "bar";
LogToFileA(_T("Test %s %s"), foo, bar);
显然,一个简单的解决方法是使用_TCHAR代替char,但不幸的是我们没有这个奢侈条件。
我们需要和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*,但是如何实现呢?