📜  C++ vswprintf()

📅  最后修改于: 2020-09-25 09:45:57             🧑  作者: Mango

C++中的vswprintf() 函数用于将格式化的宽字符串写入宽字符串缓冲区。

vswprintf() 函数在头文件中定义。

vswprintf()原型

int vswprintf( wchar_t* buffer, size_t buf_size, const wchar_t* format, va_list vlist );

所述vswprintf() 函数将通过格式指向到宽字符串的宽字符串 buffer 。最多将(buf_size-1)宽字符写入缓冲区,后跟一个空宽字符。

宽字符串 format可能包含以%开头的格式说明符,这些格式说明符由作为列表vlist传递的变量的值替换。

vswprintf()参数

vswprintf()返回值

示例:vswprintf() 函数如何工作?

#include 
#include 
#include 

void write(wchar_t* buffer, size_t buf_size, const wchar_t *fmt, ...)
{
    va_list args;
    va_start(args, fmt);
    vswprintf(buffer, buf_size, fmt, args);
    va_end(args);
}

int main ()
{
    wchar_t str[] = L"\u0684 \u06b1 \u06aa \u06a3 \u0684";
    wchar_t buffer[50];

    setlocale(LC_ALL, "en_US.UTF-8");

    write(buffer, 50, L"Arabic Letters: %ls\n", str);
    wprintf(L"%ls", buffer);

    return 0;
}

运行该程序时,会将以下内容写入example.txt:

Arabic Letters: ڄ ڱ ڪ ڣ ڄ