Home C&C++函数库 c++ 语法 程序源码 Linux C库


vswprintf

函数   <cwchar>

int vswprintf (wchar_t * ws, size_t len, const wchar_t * format, va_list arg );

将格式化的数据从变量参数列表写入特定大小的缓冲区

使用与wprintf上使用format时打印的相同的文本组成字符串, 但使用arg的变量参数列表中的元素而不是附加函数参数, 并将结果内容作为C宽字符串存储在ws指向的缓冲区中(以len作为要填充的最大缓冲区容量, 以宽字符表示)。
如果得到的字符串长度超过len-1个宽字符,则丢弃其余字符,不存储。
在内部,函数从arg标识的列表中检索参数,就像在它上面使用了va_arg一样,因此arg的状态很可能会被调用改变。
在任何情况下,arg都应该在调用之前的某个点被va_start初始化,并且它应该在调用之后的某个点被va_end释放。

这相当于 vsnprintf(<cstdio>)的宽字符版本。

☲  参数


ws
指向缓冲区的指针,生成的C宽字符串存储在这里。
缓冲区的大小应该至少为len个宽字符。

len
要写入缓冲区的最大宽字符数。
生成的字符串长度最多为len-1,为额外的结束空宽字符留下空间。
Size_t是一个无符号整型。

format
C宽字符串,包含一个格式字符串, 该格式字符串遵循与printf格式相同的规范(有关详细信息,请参阅printf)。
注意,所有格式说明符都具有与printf相同的含义; 因此,应使用%lc写入宽字符(而不是%c),以及应使用%ls宽字符串(而不是%s)。

arg
一个值,标识用va_start初始化的变量参数列表。
Va_list是<cstdarg>中定义的特殊类型

☉  返回值



如果成功,则返回所写的字符总数。此数不包括自动附加在字符串末尾的其他空字符。
如果发生读取错误或在读取时到达文件结束,则设置正确的指示符(feof或ferror)。 并且,如果任何一种情况发生在任何数据可以成功读取之前,则返回EOF。

如果失败,将返回一个负数,包括写入ws的结果字符串将超过len个字符。

☣  示例



/* vswprintf example */
#include <stdio.h>
#include <stdarg.h>
#include <wchar.h>

void PrintWide ( const wchar_t * format, ... )
{
  wchar_t buffer[256];
  va_list args;
  va_start ( args, format );
  vswprintf ( buffer, 256, format, args );
  fputws ( buffer, stdout );
  va_end ( args );
}

int main ()
{
   wchar_t str[] = L"test string has %d wide characters.\n";

   PrintWide ( str, wcslen(str) );

   return 0;
}

可能输出:
test string has 36 wide characters.

🍄  另请参阅



printf 将格式化的数据打印到标准输出(function )
vsnprintf 将格式化的数据从变量参数列表写入特定大小的缓冲区(function )
vfwprintf 将格式化的数据从变量参数列表写入流(function )
vwprintf 将格式化的数据从变量参数列表打印到标准输出(function )
swprintf 将格式化的数据写入宽字符串(function )
wprintf 将格式化的数据打印到标准输出(function )

联系我们 免责声明 关于CandCplus 网站地图