函数
<cwchar>

wprintf

int wprintf (const wchar_t* format, ...);
将格式化数据打印到标准输出
format 指向的 C 宽字符串写入标准输出 (stdout),并以与 printf 相同的方式替换任何格式说明符

宽字符在stdout中的外部表示是多字节字符:这些字符是通过调用 wcrtomb 来转换每个宽字符而获得的(使用的内部 mbstate_t 对象)。

这是 printf (<cstdio>) 的宽字符等效版本。

参数

format
C 宽字符串,包含一个格式字符串,其遵循与 printfformat 相同的规范(详情请参阅 printf)。
请注意,所有格式说明符的含义与 printf 中相同;因此,%lc应用于写入一个宽字符(而不是%c),同样%ls应用于宽字符串(而不是%s).
... (附加参数)
根据格式字符串,函数可能需要一系列附加参数,每个参数包含一个用于替换格式字符串中格式说明符的值(或者,对于n).
,是指向存储位置的指针)。这些参数的数量应至少与格式说明符中指定的值的数量一样多。额外的参数会被函数忽略。

返回值

成功时,返回写入的字符总数。

如果发生写入错误,则会设置错误指示符ferror)并返回一个负数。

如果在写入宽字符时发生多字节字符编码错误,errno 会被设置为EILSEQ并返回一个负数。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* wprintf example */
#include <wchar.h>

int main()
{
   wprintf (L"Characters: %lc %lc \n", L'a', 65);
   wprintf (L"Decimals: %d %ld\n", 1977, 650000L);
   wprintf (L"Preceding with blanks: %10d \n", 1977);
   wprintf (L"Preceding with zeros: %010d \n", 1977);
   wprintf (L"Some different radixes: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);
   wprintf (L"floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
   wprintf (L"Width trick: %*d \n", 5, 10);
   wprintf (L"%ls \n", L"A wide string");
   return 0;
}

输出

Characters: a A
Decimals: 1977 650000
Preceding with blanks:       1977
Preceding with zeros: 0000001977
Some different radixes: 100 64 144 0x64 0144
floats: 3.14 +3e+000 3.141600E+000
Width trick:    10
A wide string


另见