次のような C++ コードがある場合:
std::string narrow( "This is a narrow source string" );
std::string n2( "Win-1252 (that's the encoding we use for source files): ä,ö,ü,ß,€, ..." );
// What encoding should I pass to Win32's `MultiByteToWideChar` function
// to convert these string to a propoer wchar_t (= UTF-16 on Windows)?
これが cpp ファイルの (暗黙の) エンコーディングである場合、常に Win-1252 と想定できますか? Visual-C++ コンパイラは、ソース ファイルの文字エンコーディングをどのように決定しますか?
たとえば、開発者が「通常の」テキスト ファイルのデフォルトが別のシングル/マルチバイト エンコーディングになっているマシンを使用するとどうなるでしょうか。
エンコーディングは、コードのコンパイルに使用されるマシンの問題だけだと思いますか? つまり、実行可能ファイルがビルドされると、静的文字列を固定の狭いエンコーディングから Windows の UTF-16 wchar_t に変換すると、ユーザーの PC の言語/ロケールに関係なく、常に同じ結果が得られますか?