可变参数的格式化输出函数

    xiaoxiao2021-04-12  31

    #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

    最新回复(0)