std::wprintf, std::fwprintf, std::swprintf
| ヘッダ <cwchar> で定義
|
||
int wprintf( const wchar_t* format, ... ); |
(1) | |
int fwprintf( std::FILE* stream, const wchar_t* format, ... ); |
(2) | |
int swprintf( wchar_t* buffer, std::size_t size, const wchar_t* format, ... ); |
(3) | |
指定された位置からデータをロードし、それらをワイド文字列に変換し、結果を様々なシンクに書き込みます。
stream に書き込みます。buffer に書き込みます。 最大 buf_size - 1 個のワイド文字とそれに続くヌルワイド文字が書き込まれます。引数
| stream | - | 書き込む出力ファイルストリーム | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| buffer | - | 書き込むワイド文字列を指すポインタ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| size | - | 最大 size - 1 文字およびヌル終端が書き込まれる可能性があります
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| format | - | データの解釈方法を指定するヌル終端ワイド文字列を指すポインタ。
書式文字列は、変更されずに出力ストリームにコピーされる (
以下の書式指定子が利用できます。
浮動小数点変換関数は無限大を 非数は 変換
固定幅の整数型 (int8_t など) に対する正しい変換指定はヘッダ <cinttypes> で定義されています (PRIdMAX, PRIuMAX などは メモリに書き込む変換指定子 変換指定子それぞれの動作後に副作用完了点があります。 これにより同じ変数に複数の 変換指定が無効な場合、動作は未定義です。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ... | - | 表示するデータを指定する引数。 デフォルト変換後のいずれかの引数が対応する変換指定子の期待する型でない場合、または format が要求するより少ない引数しかない場合、動作は未定義です。 format が要求するより多くの引数がある場合、余分な引数は評価され、無視されます
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
戻り値
size より大きいまたは等しい (size がゼロのときも含みます) 場合は負の値。ノート
ナロー文字列が要求される出力バッファサイズを調べられる std::snprintf を提供する一方、ワイド文字列に対する同等な関数はありません。 バッファサイズを決定するためには、 std::swprintf を呼び、結果の値をチェックし、より大きなバッファを確保し直し、成功するまで同様に試みる必要があります。
例
#include <iostream>
#include <locale>
#include <clocale>
#include <cwchar>
int main()
{
char narrow_str[] = "z\u00df\u6c34\U0001f34c";
// or "zß水🍌"
// or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9f\x8d\x8c";
wchar_t warr[29]; // the expected string is 28 characters plus 1 null terminator
std::setlocale(LC_ALL, "en_US.utf8");
std::swprintf(warr, sizeof warr/sizeof *warr,
L"Converted from UTF-8: '%s'", narrow_str);
std::wcout.imbue(std::locale("en_US.utf8"));
std::wcout << warr << '\n';
}
出力:
Converted from UTF-8: 'zß水🍌'
関連項目
(C++11) |
stdout、ファイルストリームまたはバッファに書式付き出力を行います (関数) |
| 可変個引数リストを使用して stdout、ファイルストリームまたはバッファに書式付きワイド文字出力を行います (関数) | |
| ファイルストリームにワイド文字列を書き込みます (関数) | |
wprintf, fwprintf, swprintf の C言語リファレンス
| |