C++ 中的swprintf() 函數用於將格式化的寬字符串寫入寬字符串緩衝區。
swprintf() 函數在<cwchar> 頭文件中定義。
swprintf()原型
int swprintf( wchar_t* buffer, size_t size, const wchar_t* format, ... );
swprintf() 函數將 format 指向的寬字符串寫入緩衝區。可寫入的最大字符數為 (size-1)。
寫入字符後,將添加一個終止的空寬字符。
寬字符串格式可能包含以 % 開頭的格式說明符,這些說明符被作為附加參數傳遞給 swprintf() 函數的變量值替換。
參數:
buffer
:指向要寫入結果的字符串緩衝區的指針。size
:指定要寫入大小為 1 的緩衝區的最大字符數。format
:指向寫入標準輸出的空終止寬字符串的指針。它由寬字符以及以 % 開頭的可選格式說明符組成。格式說明符由遵循格式的各個變量的值替換。
格式說明符包含以下部分:- 前導 % 符號
- 標誌:可選的一個或多個標誌,用於修改轉換行為。
- -:左對齊字段內的結果。默認情況下它是右對齊的。
- +:結果的符號附加到值的開頭,即使是正麵結果也是如此。
- 空格:如果沒有符號,則在結果的開頭附加一個空格。
- #:執行另一種形式的轉換。
- 0:用於整數和浮點數。前導零用於填充數字而不是空格。
- 寬度:可選的 * 或整數值,用於指定最小寬度字段。
- 精度:一個可選字段,由 .後跟 * 或整數或不指定精度。
- 長度:一個可選的長度修飾符,指定參數的大小。
- 說明符:轉換格式說明符。可用的格式說明符如下:
格式說明符 格式說明符 說明 % 印刷 % c 寫入單個字符 s 寫入一個字符串 d 或 i 將有符號整數轉換為十進製表示 o 將無符號整數轉換為八進製表示 X 或 x 將無符號整數轉換為十六進製表示 u 將無符號整數轉換為十進製表示 F 或 f 將浮點數轉換為十進製表示 E 或 e 將浮點數轉換為十進製 index 表示法 一個或一個 將浮點數轉換為十六進製 index 克或克 將浮點數轉換為十進製或十進製 index 表示法 n 返回到目前為止此函數調用寫入的字符數。結果寫入參數指向的值 p 編寫定義指針的實現定義的字符序列。
所以格式說明符的一般格式是:%[flags][width][.precision][length]specifier
- …:指定要寫入的數據的其他附加參數。它們根據格式說明符按順序出現。
返回:
- 成功時,swprintf() 函數返回寫入的字符數,不包括終止的空寬字符。
- 如果發生編碼錯誤或要生成的字符數等於或大於 size,則返回負值。
示例:swprintf() 函數如何工作?
#include <cwchar>
#include <cstdio>
#include <clocale>
#include <iostream>
using namespace std;
int main()
{
wchar_t hebrew_str[] = L"\u05D0 \u05D1 \u05E1 \u05D3 \u05EA";
wchar_t buffer[100];
setlocale(LC_ALL, "en_US.UTF-8");
swprintf(buffer, sizeof(hebrew_str), L"%ls", hebrew_str);
wcout << L"Some hebrew letters\n" << buffer << endl;
return 0;
}
運行程序時,以下內容將寫入 example.txt:
Some hebrew letters א ב ס ד ת
相關用法
- C++ swscanf()用法及代碼示例
- C++ swap()用法及代碼示例
- C++ std::max()用法及代碼示例
- C++ std::string::push_back()用法及代碼示例
- C++ std::less_equal用法及代碼示例
- C++ set rbegin()用法及代碼示例
- C++ string::length()用法及代碼示例
- C++ set upper_bound()用法及代碼示例
- C++ set crbegin用法及代碼示例
- C++ std::is_member_object_pointer模板用法及代碼示例
- C++ std::copy_n()用法及代碼示例
- C++ std::string::insert()用法及代碼示例
- C++ std::is_sorted_until用法及代碼示例
- C++ std::iota用法及代碼示例
- C++ set size用法及代碼示例
- C++ std::numeric_limits::digits用法及代碼示例
- C++ sscanf()用法及代碼示例
- C++ std::string::data()用法及代碼示例
- C++ smatch max_size()用法及代碼示例
- C++ std::is_permutation用法及代碼示例
注:本文由純淨天空篩選整理自 C++ swprintf()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。