Skip to content

Instantly share code, notes, and snippets.

@TakashiNakagawa
Created August 16, 2014 02:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TakashiNakagawa/0bbc3f107996f9c1305a to your computer and use it in GitHub Desktop.
Save TakashiNakagawa/0bbc3f107996f9c1305a to your computer and use it in GitHub Desktop.
ダイアログから日本語を文字化けせずに読み込む方法
#include <cstdlib>
//ワイド文字列からマルチバイト文字列
//ロケール依存
void narrow(const std::wstring &src, std::string &dest) {
setlocale(LC_CTYPE, "");
char *mbs = new char[src.length() * MB_CUR_MAX + 1];
wcstombs(mbs, src.c_str(), src.length() * MB_CUR_MAX + 1);
dest = mbs;
delete [] mbs;
}
std::string convertWideToNarrow( const wchar_t *s, char dfault = '?',
const std::locale& loc = std::locale() )
{
#if 0
std::ostringstream stm;
while( *s != L'\0' ) {
stm << std::use_facet< std::ctype<wchar_t> >( loc ).narrow( *s++, dfault );
}
return stm.str();
#else
std::wstring wstr(s);
std::string ret;
narrow(wstr, ret);
return ret;
#endif
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment