質問: Windows10 VS2019の『char -> wchar_tの変換』について質問します。 下記のコードで変換が出来ません。
回答: 日本語環境で Visual Studio 2019 (MSVC) のマルチバイト文字列のデフォルトのエンコードは CP932 (Shift_JIS) です。setlocale に指定するロケール文字列は "ja_JP.cp932" あるいは "cp932" は省略して "ja" になります。 "ja_JP.UTF-8" を指定するのであれば、文字列リテラルに "u8" プリフィックスを付けて、UTF-8 でエンコードします。 setlocale(LC_CTYPE, "ja_JP.UTF-8"); char str1[] = u8"(゚∀゚)( ゚∀)超( ゚)絶( )大(゚ )興(∀゚ )奮(゚∀゚)━キター!!!!"; 以下追加します。#include #include #include #include int main() { setlocale(LC_CTYPE, "ja_JP.UTF-8"); wchar_t str1[] = L"UTF-16でエンコードしたワイド文字列"; size_t ReturnValue; if (wcstombs_s(&ReturnValue, NULL, 0, str1, _TRUNCATE) != 0) return EXIT_FAILURE; size_t requiredSize = ReturnValue; char *str2 = (char *)malloc(requiredSize); errno_t result = wcstombs_s(&ReturnValue, str2, requiredSize, str1, _TRUNCATE); if (result != 0) { fwprintf(stderr, L"マルチバイト文字列の変換に失敗\n"); return EXIT_FAILURE; } }