此vswprintf()函数将宽字符串写入宽字符串缓冲区。最多(len-1)个宽字符写入缓冲区,后跟一个空宽字符。
用法:
int vswprintf( wchar_t* ws, size_t len, const wchar_t* format, va_list arg )
参数:该函数接受四个强制性参数,如下所述:
- ws:指定指向给定宽字符串缓冲区的指针,该缓冲区将存储结果
- len:指定写回缓冲区的宽字符的最大长度,包括终止的空字符
- format:指定指向空终止的宽字符串的指针
- arg:指定标识变量参数列表的值
注意:所有格式说明符的含义都与printf中的含义相同,因此,%lc将用于写一个宽字符(而不是%c),%ls应该用于宽字符串(而不是%s)。
返回值:该函数返回两个值,如下所示:
- 成功后,vswprintf()函数将返回写入的宽字符数,但不包括终止的空宽字符。
- 失败时返回负数,包括要写入ws的结果字符串长于n个字符时。
以下示例程序旨在说明上述函数:
示例1:
// C++ program to illustrate the
// vswprintf() function
#include <bits/stdc++.h>
using namespace std;
// function to check the number
// of wide characters written
void find ( wchar_t* ws, size_t len, const wchar_t *format, ... )
{
// hold the variable argument
va_list arg;
// A function that invokes va_start
// shall also invoke va_end before it returns.
va_start ( arg, format );
vswprintf ( ws, len, format, arg );
va_end ( arg );
}
// Driver code
int main ()
{
// buffer with size 60
wchar_t ws[60];
// initializing the string as latin characters
wchar_t str[] = L"\u0025 \u0026 \u0027 \u0028 \u0029";
// print the letters
find(ws, 60, L"Some Latin letters : %ls\n", str);
wprintf(L" %ls ", ws);
return 0;
}
输出:
Some Latin letters : % & ' ( )
示例2:
// C++ program to illustrate the
// vswprintf() function
// When the size of the buffer is smaller
// than the total length of the string written
#include <bits/stdc++.h>
using namespace std;
// function to check the number
// of wide characters written
void find ( wchar_t* ws, size_t len, const wchar_t *format, ... )
{
// hold the variable argument
va_list arg;
// A function that invokes va_start
// shall also invoke va_end before it returns.
va_start ( arg, format );
vswprintf ( ws, len, format, arg );
va_end ( arg );
}
// Driver code
int main ()
{
// initializing the string as english characters
wchar_t str[] = L"Geek for geeks";
// buffer with size 20
wchar_t ws[20];
find(ws, 20, L"GFG is : %ls\n", str);
wprintf(L"%ls", ws);
return 0;
}
输出:
GFG is : Geek for g
注意:如果结果字符串的长度大于n-1个宽字符,则其余字符将被丢弃而不存储。
相关用法
- C++ log()用法及代码示例
- C++ div()用法及代码示例
- C++ fma()用法及代码示例
- C++ map key_comp()用法及代码示例
- C++ imag()用法及代码示例
- C++ real()用法及代码示例
- C++ regex_iterator()用法及代码示例
- C++ valarray pow()用法及代码示例
- C++ valarray log()用法及代码示例
注:本文由纯净天空筛选整理自AmanSrivastava1大神的英文原创作品 vswprintf() function in C/C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。