C++相談室 part39
■ このスレッドは過去ログ倉庫に格納されています
0817デフォルトの名無しさん
NGNGstd::locale system_locale("");
std::locale::global(system_locale);
char from_buf[BUFSIZ];
std::cin >> from_buf;
char const * from = static_cast<char const *>(from_buf);
std::size_t from_size = strlen(from);
char const * from_end = from + from_size;
char const * from_next = 0;
boost::shared_array<wchar_t> to_sp(new wchar_t[from_size]);
wchar_t * to = to_sp.get();
wchar_t * to_end = to + from_size;
wchar_t * to_next = 0;
std::memset(to, 0, sizeof(wchar_t) * (from_size));
codecvt_type::state_type state;
std::memset(&state, 0, sizeof(codecvt_type::state_type));
codecvt_type const & cvt = std::use_facet<codecvt_type>(system_locale);
if (cvt.in(state, from, from_end, from_next, to, to_end, to_next) == codecvt_type::error) {
std::wcout << std::strerror(errno) << std::endl;
std::exit(1);
}
std::codecvt を使って char * から wchar_t * を作るコードを書いたんだけど、
std::locale::global(system_locale); しないと動かないのは、こういうものなの?
■ このスレッドは過去ログ倉庫に格納されています