當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ vswprintf()用法及代碼示例


此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個寬字符,則其餘字符將被丟棄而不存儲。



相關用法


注:本文由純淨天空篩選整理自AmanSrivastava1大神的英文原創作品 vswprintf() function in C/C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。