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


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

C++中的vwprintf()函數用於將格式化的寬字符串寫入stdout。它將格式化的數據從變量參數列表打印到stdout。在內部,該函數從arg標識的列表中檢索參數,就好像在其上使用了va_arg一樣,因此arg的狀態可能會被調用更改。寬字符串格式可能包含以%開頭的格式說明符,這些說明符由作為列表vlist傳遞的變量的值替換。它在頭文件語法中定義:

int vwprintf( const wchar_t* format, va_list vlist )

參數:該函數接受四個強製性參數,如下所述:

  • format:指定一個指向以空終止的寬字符串的指針,該字符串被寫入stdout
  • arg:指定一個值,該值標識用va_start初始化的變量參數列表

返回值:該函數返回兩個值,如下所示:


  • 成功後,將返回寫入的字符總數。
  • 如果發生某些錯誤,則返回負數。

以下示例程序旨在說明上述函數:
程序1:

// C++ program to illustrate the 
// vwprintf() function 
// for some english letter 
  
#include <bits/stdc++.h> 
using namespace std; 
  
// function to print formatted 
// data from variable argument list to stdout 
void write(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); 
  
    vwprintf(format, arg); 
    va_end(arg); 
} 
  
// Driver code 
int main() 
{ 
    setlocale(LC_ALL, "en_US.UTF-8"); 
  
    wchar_t buffer[5][10] = { L"First", L"Second", L"Third", 
                              L"Fourth", L"Fifth" }; 
    int k = 0; 
  
    // print letters by calling write function 
    wprintf(L"Some English Letters\n"); 
    for (wchar_t i = L'A'; i <= L'E'; i++) { 
        write(L"%ls:%lc\n", buffer[k], i); 
        k++; 
    } 
  
    return 0; 
}
輸出:
Some English Letters
First:A
Second:B
Third:C
Fourth:D
Fifth:E
// C++ program to illustrate the 
// vwprintf() function 
// for some Latin letters 
#include <bits/stdc++.h> 
using namespace std; 
  
// function to print formatted 
// data from variable argument list to stdout 
void write(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); 
  
    vwprintf(format, arg); 
    va_end(arg); 
} 
  
// Driver code 
int main() 
{ 
    setlocale(LC_ALL, "en_US.UTF-8"); 
  
    wchar_t buffer[5][10] = { L"First", L"Second", L"Third", 
                              L"Fourth", L"Fifth" }; 
    int k = 0; 
  
    // print letters by calling write function 
    wprintf(L"Some Latin Letters\n"); 
    for (wchar_t i = L'\u0021'; i <= L'\u0025'; i++) { 
        write(L"%ls:%lc\n", buffer[k], i); 
        k++; 
    } 
  
    return 0; 
}
輸出:
Some Latin Letters
First:!
Second:"
Third:#
Fourth:$
Fifth:%


相關用法


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