function
<cwchar>

vwprintf

int vwprintf (const wchar_t* format, va_list arg);
Print formatted data from variable argument list to stdout
Writes the C wide string pointed by format to the standard output (stdout), replacing any format specifier in the same way as printf does, but using the elements in the variable argument list identified by arg instead of additional function arguments.

Internally, the function retrieves arguments from the list identified by arg as if va_arg was used on it, and thus the state of arg is likely altered by the call.

In any case, arg should have been initialized by va_start at some point before the call, and it is expected to be released by va_end at some point after the call.

The external representation of wide characters in stdout are multibyte characters: These are obtained as if wcrtomb was called to convert each wide character (using the stream's internal mbstate_t object).

This is the wide character equivalent of vprintf (<cstdio>).

Parameters

format
C wide string that contains a format string that follows the same specifications as format in printf (see printf for details).
Notice that all format specifiers have the same meaning as in printf; therefore, %lc shall be used to write a wide character (and not %c), as well as %ls shall be used for wide strings (and not %s).
arg
A value identifying a variable arguments list initialized with va_start.
va_list is a special type defined in <cstdarg>.

Return Value

On success, the total number of characters written is returned.

If a writing error occurs, the error indicator (ferror) is set and a negative number is returned.

If a multibyte character encoding error occurs while writing wide characters, errno is set to EILSEQ and a negative number is returned.

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* vwprintf example */
#include <stdarg.h>
#include <wchar.h>

void WriteWideFormatted ( const wchar_t * format, ... )
{
  va_list args;
  va_start (args, format);
  vwprintf (format, args);
  va_end (args);
}

int main ()
{
   WriteWideFormatted (L"Call with %d variable argument.\n",1);
   WriteWideFormatted (L"Call with %d variable %ls.\n",2,L"arguments");

   return 0;
}

Output:
Call with 1 variable argument.
Call with 2 variable arguments.


See also