std::wctob
From cppreference.com
| ヘッダ <cwchar> で定義 |
||
| int wctob( std::wint_t c ); |
||
ワイド文字 c を、初期シフト状態におけるマルチバイト文字表現が1バイトである場合に、ナロー文字に変換します。
これは通常、ASCII文字セットからの文字に対して可能です。なぜなら、ほとんどのマルチバイトエンコーディング(UTF-8など)は、これらの文字をエンコードするために1バイトを使用するからです。
目次 |
[編集] パラメータ
| c | - | ナロー化するワイド文字 |
[編集] 戻り値
EOF: c が、初期シフト状態において長さ 1 のマルチバイト文字を表さない場合。
それ以外の場合: c の1バイト表現を unsigned char として int に変換した値。
[編集] 例
このコードを実行
#include <clocale> #include <cwchar> #include <iostream> void try_narrowing(wchar_t c) { int cn = std::wctob(c); if (cn != EOF) std::cout << '\'' << int(c) << "' narrowed to " << +cn << '\n'; else std::cout << '\'' << int(c) << "' could not be narrowed\n"; } int main() { std::setlocale(LC_ALL, "th_TH.utf8"); std::cout << std::hex << std::showbase << "In Thai UTF-8 locale:\n"; try_narrowing(L'a'); try_narrowing(L'๛'); std::setlocale(LC_ALL, "th_TH.tis620"); std::cout << "In Thai TIS-620 locale:\n"; try_narrowing(L'a'); try_narrowing(L'๛'); }
出力
In Thai UTF-8 locale: '0x61' narrowed to 0x61 '0xe5b' could not be narrowed In Thai TIS-620 locale: '0x61' narrowed to 0x61 '0xe5b' narrowed to 0xfb
[編集] 関連項目
| 可能であれば、1バイトのナロー文字をワイド文字にワイド化する (関数) | |
| 文字をナロー化する ( std::basic_ios<CharT,Traits> の public メンバ関数) | |
do_narrowを呼び出します。(public member function of std::ctype<CharT>) | |
| C言語のドキュメント (wctob)
| |