1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| //StringConversions.cpp
#include "StringConversions.hpp"
#include <cwchar>
#include <string>
#include <vector>
#include <exception>
using namespace std;
wstring GetWString(string const &src)
{
size_t cchBufSize = 0;
errno_t err = mbstowcs_s(&cchBufSize, NULL, 0, src.c_str(), _TRUNCATE);
if(err != 0)
throw std::runtime_error("Failed to get size of output when converting to wstring.");
vector<wchar_t> vec(cchBufSize);
err = mbstowcs_s(&cchBufSize, &vec.at(0), cchBufSize, src.c_str(), cchBufSize-1);
if(err != 0)
throw std::runtime_error("Failed to convert to wstring.");
wstring ret(&vec.at(0));
return ret;
}
wstring GetWString(wstring const &src) { return src; }
string GetAString(string const &src) { return src; }
string GetAString(wstring const &src)
{
size_t cchBufSize = 0;
errno_t err = wcstombs_s(&cchBufSize, NULL, 0, src.c_str(), _TRUNCATE);
if(err != 0)
throw std::runtime_error("Failed to get size of output when converting to string.");
vector<char> vec(cchBufSize);
err = wcstombs_s(&cchBufSize, &vec.at(0), cchBufSize, src.c_str(), cchBufSize-1);
if(err != 0)
throw std::runtime_error("Failed to convert to string.");
string ret(&vec.at(0));
return ret;
} |
Partager