結構勘違いしている人が多いし私も最近まで知らなかったのですが、C/C++のソースファイルのエンコードと文字列リテラルのエンコードは同じではありません。おそらく処理系依存だと思います。
VisualStudioの場合、ソースファイルのエンコードに関係なく文字列リテラルのエンコードはSJISになります。ワイド文字列リテラルはUTF-16です。
次のようにすると
const char s[] = "あ";
for (auto c : s)
{
std::printf("0x%02x\n", (unsigned char)c);
}
0x82
0xa0
0x00
と表示されることで確認できます。