函式
<cwchar>

vwprintf

int vwprintf (const wchar_t* format, va_list arg);
從可變引數列表向 stdout 列印格式化資料
format 指向的 C 寬字串寫入標準輸出 (stdout),其替換任何格式說明符的方式與 printf 相同,但使用的是由 arg 標識的可變引數列表中的元素,而非額外的函式引數。

在內部,該函式從 arg 標識的列表中檢索引數,如同對其使用了 va_arg 一樣,因此 arg 的狀態很可能會在呼叫後被改變。

無論如何,arg 應該在呼叫之前的某個時刻由 va_start 初始化,並且預計在呼叫之後的某個時刻由 va_end 釋放。

寬字元在stdout是多位元組字元:這些字元的獲得方式就如同呼叫 wcrtomb 來轉換每個寬字元(使用的內部 mbstate_t 物件)。

這是 vprintf (<cstdio>) 的寬字元等價版本。

引數

format
C 寬字串,包含一個格式字串,其遵循與 printfformat 相同的規範(詳情請參閱 printf)。
請注意,所有格式說明符的含義與 printf 中相同;因此,%lc應用於寫入一個寬字元(而不是%c),同樣%ls應用於寬字串(而不是%s).
arg
一個標識由 va_start 初始化的可變引數列表的值。
va_list 是在 <cstdarg> 中定義的特殊型別。

返回值

成功時,返回寫入的字元總數。

如果發生寫入錯誤,則會設定錯誤指示符ferror)並返回一個負數。

如果在寫入寬字元時發生多位元組字元編碼錯誤,errno 會被設定為EILSEQ並返回一個負數。

示例

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;
}

輸出
Call with 1 variable argument.
Call with 2 variable arguments.


另見