vswscanf
函数 <cwchar>
int vswscanf (const wchar_t* ws, const wchar_t* format, va_list arg);
从宽字符串中读取格式化数据到变量参数列表中
从ws读取数据,并根据参数format将其存储到arg的变量参数列表中的元素所指向的位置。
在内部,函数从arg标识的列表中检索参数,就像在它上面使用了va_arg一样,因此arg的状态很可能会被调用改变。
在任何情况下,arg都应该在调用之前的某个点被va_start初始化,并且它应该在调用之后的某个点被va_end释放。
这相当于 vsscanf(<cstdio>)的宽字符版本。
☲ 参数
ws
函数检索数据的源C宽字符串。
format
C宽字符串,包含一个格式字符串,
该格式字符串遵循与scanf格式相同的规范(有关详细信息,请参阅scanf)。
注意,所有格式说明符都具有与scanf相同的含义;
因此,应使用%lc读取宽字符(而不是%c),以及应使用%ls读取宽字符串(而不是%s)。
arg
一个值,标识用va_start初始化的变量参数列表。
Va_list是<cstdarg>中定义的特殊类型
☉ 返回值
成功时,函数返回参数列表中已成功填充的项数。
此计数可以与预期的项目数匹配,或者在匹配失败的情况下,此计数可以小于-甚至为零。
如果在成功解释任何数据之前出现输入失败,则返回EOF。
☣ 示例
/* 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
🍄 另请参阅
wscanf |
从stdin读取格式化的数据(function ) |
vfwscanf |
从流中读取格式化的数据到变量参数列表中(function ) |
swscanf |
从字符串读取格式化的数据(function ) |
scanf |
从stdin读取格式化的数据(function ) |
vswprintf |
将格式化的数据从变量参数列表写入特定大小的缓冲区(function ) |