LoginSignup
4
2

More than 5 years have passed since last update.

C++でよく困るマルチバイト文字セットとUnicode文字セットのAPI変換チートシート

Last updated at Posted at 2017-09-24

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

ひとまずこんなところでしたけど、ほんと混乱するのでなんとかしてほしい次第……

4
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2