std:string <> std:wstring
この間 std::string と std::wstringの相互変換関数が必要になって作ったので投下.
Windows 専用だけど,お好きにどうぞ.
もっとメジャーな実装がある,間違ってる,などあればよろしく.
// strconv.h #pragma once // このヘッダを使うときはアプリケーションの // 最初にロケールの設定をすることを忘れずに! // // setlocale(LC_ALL, "Japanese"); #include <stdlib.h> #include <string> /// std::stringとstd::wstringの相互変換関数を定義した名前空間 namespace strconv { /// std::wstring -> std::string inline std::string narrow(const std::wstring& input) { char* buffer = new char[input.size() * MB_CUR_MAX + 1]; ZeroMemory(buffer, sizeof(char) * (input.size() * MB_CUR_MAX + 1)); wcstombs(buffer, input.c_str(), input.size() * MB_CUR_MAX); std::string result = buffer; delete[] buffer; return result; } /// std::string -> std::wstring inline std::wstring widen(const std::string& input) { wchar_t* buffer = new wchar_t[input.size() + 1]; ZeroMemory(buffer, sizeof(wchar_t) * (input.size() + 1)); mbstowcs(buffer, input.c_str(), input.size()); std::wstring result = buffer; delete[] buffer; return result; } } // namespace strconv