Esta función vswprintf() escribe la string ancha en el búfer de string ancha. Se escribe un máximo de (len-1) caracteres de ancho en el búfer, seguido de un carácter de ancho nulo.
Sintaxis:
int vswprintf( wchar_t* ws, size_t len, const wchar_t* formato, va_list arg )
Parámetros: La función acepta cuatro parámetros obligatorios que se describen a continuación:
- ws: especifica el puntero a un búfer de string ancha dado que almacenará el resultado
- len: especifica la longitud máxima de los caracteres anchos que se vuelven a escribir en el búfer, incluido el carácter nulo de terminación
- formato: especifica el puntero a una string ancha terminada en nulo
- arg: especifica el valor que identifica una lista de argumentos variables
Nota: Todos los especificadores de formato tienen el mismo significado que en printf , por lo tanto, %lc se debe usar para escribir un carácter ancho (y no %c ), y %ls se debe usar para strings anchas (y no %s ).
Valor de retorno: la función devuelve dos valores como se muestra a continuación:
- En caso de éxito, la función vswprintf() devuelve el número de caracteres anchos escritos, excluyendo el carácter ancho nulo final.
- Se devuelve un número negativo en caso de falla, incluso cuando la string resultante que se escribirá en ws tendría más de n caracteres.
Los siguientes programas ilustran la función anterior:
Programa 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 : % & ' ( )
Programa 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
Nota: Si la string resultante tiene más de n-1 caracteres de ancho, los caracteres restantes se descartan y no se almacenan.
Publicación traducida automáticamente
Artículo escrito por AmanSrivastava1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA