函式
<cwchar>

swprintf

int swprintf (wchar_t* ws, size_t len, const wchar_t* format, ...);
將格式化資料寫入寬字串
組合一個寬字串,其文字與使用 formatwprintf 上列印的文字相同,但內容不會被列印,而是作為C 寬字串儲存在 ws 指向的緩衝區中。

如果結果寬字串的長度超過 len-1 個字元,多餘的字元將被丟棄,不被儲存。

內容之後會自動追加一個終止空字元。

format 引數之後,函式期望至少有 format 所需的那麼多額外引數。

這是 snprintf (<cstdio>) 的寬字元等價版本。

引數

ws
指向儲存結果 C 寬字串的緩衝區的指標。
該緩衝區的大小應至少為 n 個寬字元。
len
ws 緩衝區中填充的最大寬字元數。
生成的字串長度最多為n-1,為額外的終止空寬字元留出空間。
size_t 是一個無符號整數型別。
format
C 寬字串,包含一個格式字串,其遵循與 printfformat 相同的規範(詳情請參閱 printf)。
請注意,所有格式說明符的含義與 printf 中相同;因此,%lc應用於寫入一個寬字元(而不是%c),同樣%ls應用於寬字串(而不是%s).
... (附加引數)
根據格式字串,函式可能需要一系列附加引數,每個引數包含一個用於替換格式字串中格式說明符的值(或者,對於n).
,是指向儲存位置的指標)。這些引數的數量應至少與格式說明符中指定的值的數量一樣多。額外的引數會被函式忽略。

返回值

成功時,返回寫入的字元總數。此計數不包括在字串末尾自動追加的空字元。
如果發生故障,則返回一個負數,包括當要寫入 ws 的結果字串長度超過 n 個字元時。

示例

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

int main ()
{
  wchar_t buffer [100];
  int cx;

  cx = swprintf ( buffer, 100, L"The half of %d is %d", 80, 80/2 );

  swprintf ( buffer+cx, 100-cx-1, L", and the half of that is %d.", 80/2/2 );

  fputws ( buffer, stdout );

  return 0;
}

輸出
The half of 80 is 40, and the half of that is 20.


另見