マルチバイト文字
多くのWindows APIには、入出力インターフェイスとして、システムロケール設定に依存するマルチバイト文字セットを利用する関数・構造体(シンボル末尾にAが付けられている)と、Unicode文字セットを利用する関数・構造体(シンボル末尾にWが付けられている)の両方が用意されており、ヘッダーファイルをインクルードする際に_UNICODEシンボルの定義有無でマルチバイト文字セット/Unicode文字セットを切り替えることのできるプリプロセッサマクロも用意されているが、マルチバイト文字セット用のAPIはWindows 9x系向けに書かれたコードとの互換性のために残されているものであり、またWindows NT系では内部処理にUTF-16を使用しているため、マルチバイト文字セット用のAPIを使用すると変換のための余計なオーバーヘッドが増える。Microsoft Visual C++はバージョン7.1 (2003) まではマルチバイト文字セットが既定値だったが、バージョン8.0 (2005) 以降はUnicode文字セットが既定値となった。マルチバイト文字列の操作や、ワイド文字列との相互変換のために以下のようなAPI関数が提供されている。
MultiByteToWideChar
WideCharToMultiByte
CharNextA
CharPrevA
シンボル末尾にAが付けられたマルチバイト文字セット用API関数は、コードページ番号を明示的に指定できず、動作はシステムロケール設定に依存する。