I wrote a function called ws2s to convert wstring to string:
std::string ws2s(const std::wstring & src)
{
std::string res = "";
size_t const mbs_len = wcstombs(NULL, src.c_str(), 0);
std::vector<char> buffer(mbs_len + 1);
wcstombs(&buffer[0], src.c_str(), buffer.size());
res.assign(buffer.begin(), buffer.end() - 1);
return res;
}
I use valgrind to run for memory check got some error. There is any difference between these two ways to call function ws2s?
First method:
std::string xml_path = ws2s(something);
const char * path = xml_path.c_str();
Second method:
const char * path = ws2s(something).c_str();