#include <iostream>
#include <stdarg.h>
#include <Windows.h>
#include <strsafe.h>
using namespace std;
//可用在多个平台下,不能处理宽字符
int FormatOutput1(string& buf, const char* format, ...)
{
char szBuffer[1024];
memset(szBuffer, 0x0, sizeof(szBuffer));
va_list list;
va_start(list, format);
int nByteWritten = vsnprintf(szBuffer, sizeof(szBuffer), format, list);
va_end(list);
buf = szBuffer;
return nByteWritten;
}
//能处理多字节和宽字符,只能用于Windows平台
int FormatOutput2(LPTSTR buf, LPCTSTR format, ...)
{
TCHAR szBuffer[1024];
memset(szBuffer, 0x0, sizeof(szBuffer));
va_list list;
va_start(list, format);
int nByteWritten = _vsntprintf(szBuffer, sizeof(szBuffer), format, list);
va_end(list);
memcpy(buf, szBuffer, sizeof(TCHAR)*nByteWritten);
return nByteWritten;
}
int main() {
string format;
FormatOutput1(format, "%d, %s", 100, "zhangsan");
TCHAR szFormat[MAX_PATH];
ZeroMemory(szFormat, sizeof(szFormat));
FormatOutput2(szFormat, TEXT("%d, %s"), 100, TEXT("zhangsan"));
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-667600.html