C++相談室 part41
レス数が900を超えています。1000を超えると表示できなくなるよ。
0947デフォルトの名無しさん
2005/08/15(月) 19:16:57思うような結果になりません。「こんにちは」のように全て全角の文字列の場合、
「こんにちは(半角→)ヘヘ・・・・ンンンンンA」のような妙な半角文字が表示されます。
「こaんにちは」などのように途中に半角文字を挟んだり、
全部半角の文字列を渡した場合はうまくいくようです。
どうしたらよいでしょうか。教えてくださいお願いします。
///////////////wstringからstringに変換//////////////
string narrow(const wstring& input) {
char* buffer = new char[input.size() * MB_CUR_MAX + 1];
wcstombs(buffer, input.c_str(), input.size() * MB_CUR_MAX);
string result = buffer;
delete[] buffer;
return result;
}
////////////main()の先頭でlocale設定////////////////
std::locale::global(std::locale("ja"));
////////////結果テスト//////////////
wstring text;
text = L"こんにちは";
MessageBox(NULL,narrow(text).c_str(),"",MB_OK);
レス数が900を超えています。1000を超えると表示できなくなるよ。