C++ Reference: Standard C++ Library reference: C Library: cwchar: vwscanf

C++官网参考链接:https://cplusplus.com/reference/cwchar/vwscanf/

函数 

vwscanf
int vwscanf ( const wchar_t * format, va_list arg );
将格式化的数据读取到可变实参列表中
从标准输入(stdin)读取数据,并根据C宽字符串format将数据存储到由arg标识的可变实参列表中的元素所指向的位置。
在内部,该函数从arg标识的列表中获取实参,就像对它使用了va_arg一样,因此arg的状态很可能被调用改变。
在任何情况下,arg都应该在调用之前的某个时刻由va_start初始化,并期望在调用之后的某个时刻由va_end释放。
在stdin中宽字符的外部表示形式是多字节字符:这些字符被转换正如调用mbrtowc(使用流的内部mbstate_t对象)。
这相当于宽字符的vscanf()。

形参 
format 
C宽字符串,包含一个格式字符串,该格式字符串遵循与scanf中的format相同的规范(详细信息请参阅scanf)。
请注意,所有格式说明符的含义都与scanf中的含义相同;因此,%lc应使用用于读取宽字符(而不是%c),%ls应使用用于宽字符串(而不是%s)。
arg 
一个值,标识用va_start初始化的可变实参列表。
va_list是中定义的特殊类型。

返回值
成功时,函数返回成功填充的实参列表的项数。由于匹配失败、读取错误或到达文件结束,此计数可以与预期的项数匹配,也可以更少(甚至为零)。
如果在读取过程中发生读取错误或到达文件结束,则设置适当的指示符(feof或ferror)。并且,如果在成功读取任何数据之前发生任何一种情况,则返回EOF。
如果在解释宽字符时发生编码错误,该函数将errno设置为EILSEQ。

用例
/* vwscanf example */
#include
#include
#include

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

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

  wprintf (L"Please enter a number and a word: ");
  GetWideMatches (L"%d %l[aeiou]", &val, str);
  wprintf (L"Number read: %d\nFirst vowels read: %ls\n", val, str);

  return 0;
}
可能的输出:

C++ Reference: Standard C++ Library reference: C Library: cwchar: vwscanf_第1张图片

另请参考
vscanf    Read formatted data into variable argument list (function)
wscanf    Read formatted data from stdin (function)
fscanf    Read formatted data from stream (function)
scanf    Read formatted data from stdin (function) 

你可能感兴趣的:(C++,Reference,C,Library,c++,c语言,vwscanf)