当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。