Created
August 16, 2014 02:50
-
-
Save TakashiNakagawa/0bbc3f107996f9c1305a to your computer and use it in GitHub Desktop.
ダイアログから日本語を文字化けせずに読み込む方法
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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