函式
<cwchar>

vswscanf

int vswscanf (const wchar_t* ws, const wchar_t* format, va_list arg);
從寬字串讀取格式化資料到可變引數列表
根據引數 format 中定義的格式,從 ws 讀取資料,並存儲到由可變引數列表 arg 指向的記憶體位置。

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

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

這是 vsscanf (<cstdio>) 的*寬字元*等價函式。

引數

ws
C 語言寬字串,函式將以此為源來獲取資料。
format
C 語言寬字串,包含一個格式字串,其規範與 scanf 中的 format 相同(更多詳情請參見 scanf)。
請注意,所有格式說明符的含義與 scanf 中的相同;因此,%lc應用於讀取單個寬字元(而不是%c),同樣%ls應用於寬字串(而不是%s).
arg
一個標識由 va_start 初始化的可變引數列表的值。
va_list 是在 <cstdarg> 中定義的特殊型別。

返回值

成功時,函式返回成功填充的引數列表中的專案數。在匹配失敗的情況下,此計數可以與預期的專案數相匹配,也可能更少(甚至為零)。
如果在任何資料可以被成功解析之前發生輸入失敗,則返回 EOF

示例

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

void GetWideMatches ( const wchar_t * str, const wchar_t * format, ... )
{
  va_list args;
  va_start (args, format);
  vswscanf (str, format, args);
  va_end (args);
}

int main ()
{
  int val;
  wchar_t buf[100];

  GetWideMatches ( L"99 bottles of beer on the wall", L" %d %ls ", &val, buf);

  wprintf (L"Product: %ls\nQuantity: %d\n", buf, val);

  return 0;
}

可能的輸出
Product: bottles
Quantity: 99


另見