MultiByteToWideCharとWideCharToMultiByteの第1引数について

naohiro19
記事: 256
登録日時: 14年前
住所: 愛知県

MultiByteToWideCharとWideCharToMultiByteの第1引数について

投稿記事 by naohiro19 » 9年前

MultiByteToWideCharとWideCharToMultiByteの第1引数はコンソール画面の場合第1引数にCP_THREAD_ACPを渡さないと文字化けが起こります。

CODE:

wchar_t *str = L"文字列";
std::string result;
char* buffer = 0;
int len = WideCharToMultiByte(CP_THREAD_ACP, 0, str, -1, buffer, 0, NULL, NULL);
	
if (len > 0){
	buffer = new char[len + 1];
	memset(buffer, 0, len + 1);
	WideCharToMultiByte(CP_THREAD_ACP, 0, str, -1, buffer, len, NULL, NULL);
	result = buffer;
	if (buffer) delete[] buffer;
}
printf("変換後:%s\n", result.c_str());
知恵袋ノートにも書いてあります。
最後に編集したユーザー naohiro19 on 2015年7月10日(金) 19:50 [ 編集 2 回目 ]

ISLe
記事: 2650
登録日時: 14年前

Re: MultiByteToWideCharとWideCharToMultiByteの第1引数について

投稿記事 by ISLe » 9年前

コマンドプロンプトのデフォルトのコードページ(932)を前提にした話ですよね。
コマンドプロンプトのコードページを変更できることはご存知ですか。