C/C++のAPIでマルチバイト文字セットとUnicode文字セットに対応するチートシートです。
これまでマルチバイト文字セットをよく使ってたんであまり気にしてなかったのですが、最近マルチバイト文字セット→Unicode文字セットへ変換することがあり、そこで使われているAPIを置き換えていたんですが、どのAPIも単純に頭に'w'をつければよいというわけでなく、毎回混乱してgoogle先生に頼っていたのでひとまず実際に使ったやつについて表にまとめてみました。
※他にもよく使うものがあれば追記予定
API表
マルチバイト文字セット | Unicode文字セット | 概要 |
---|---|---|
sprintf | swprintf | 指定した文字列書式に従って文字列配列に書き込む |
sprintf_s | swprintf_s | 安全なsprintf |
_splitpath | _wsplitpath_s | パスをファイル名と拡張子に分解する |
_splitpath_s | _wsplitpath_s | 安全な_splitpath |
_makepath | wmakepath | ドライブ名、ディレクトリパス、ファイル名、拡張子から絶対パスを作成する |
_makepath_s | wmakepath_s | 安全な_makePath |
strlen | wcs len | 文字列の長さを取得する |
fopen_s | _wfopen_s | ファイルを開く |
rename | _wrename | ファイルを変更する |
remove | _wremove | 指定されたファイルを削除する |
strcpy_s | wcscpy_s | 文字列をコピーする |
strcat_s | wcscat_s | 文字列を結合する |
strrchr | wcsrchr | 文字列を検索する |
命名規則(推測)
基本系
頭になにもついてないので_wをつける
rename -> _wrename
動詞の直前に
sprintf -> swprintf
ストリング接頭辞をワイド文字列に
str~はwcsに
strcpy_s -> wcscpy_s
よくわからない
頭にwをつけてついでにアンダーバーもつけちゃったぜ
fopen_s -> _wfopen_s
ひとまずこんなところでしたけど、ほんと混乱するのでなんとかしてほしい次第……