// 把一个wstring转化为string
std::string& to_string(std::string& dest, std::wstring const & src)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif) {
std::setlocale(LC_CTYPE, "");
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
size_t const mbs_len = wcstombs(NULL, src.c_str(), 0);
std::vector<char> tmp(mbs_len + 1);
wcstombs(&tmp[0], src.c_str(), tmp.size());
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
dest.assign(tmp.begin(), tmp.end() - 1);
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
return dest;
}
// 把一个string转化为wstring
std::wstring& to_wstring(std::wstring& dest, std::string const & src)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif) {
std::setlocale(LC_CTYPE, "");
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
size_t const wcs_len = mbstowcs(NULL, src.c_str(), 0);
std::vector<wchar_t> tmp(wcs_len + 1);
mbstowcs(&tmp[0], src.c_str(), src.size());
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
dest.assign(tmp.begin(), tmp.end() - 1);
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
return dest;
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
|