転載:https://www.cnblogs.com/xuejianhui/p/3740243.html
1つの#include < ストリング > 2 3のstd :: 文字列 ws2s(CONSTのstd :: wstringの&WS) 4 { 5 のstd :: 文字列 curLocale =はsetlocale(LC_ALL、NULL); // curLocale = "C"; 6 はsetlocale(LC_ALL、" CHS " )。 7 のconstのwchar_t * _Source = ws.c_str()。 8 size_tの_Dsize = 2 * ws.size()+ 1 。 9 のchar * _DEST = 新しい CHAR [_Dsize]。 10 のmemset(_DEST、0 、_Dsize)。 11 wcstombs(_DEST、_Source、_Dsize)。 12 のstd :: 文字列の結果= _DEST。 13 削除[] _DEST。 14 はsetlocale(LC_ALL、curLocale.c_str())。 15 リターン結果; 16 } 17 18のstd :: wstringのs2ws(CONSTのstd :: 文字列&S) 19 { 20 にsetlocale(LC_ALL、" CHS " )。 21 のconst char型 * _Source = s.c_str()。 22 size_tの_Dsize = s.size()+ 1 。 23 のwchar_t * _DEST = 新しいのwchar_t [_Dsize]。 24 wmemset(_DEST、0 、_Dsize)。 25 mbstowcsは(_DEST、_Source、_Dsize)。 26 のstd :: wstringの結果= _DEST。 27 削除[] _DEST。 28 はsetlocale(LC_ALL、" C " )。 29 リターン結果; 30 } 31 32 // C ++ストリング和wstringの之间的互相转换函数: 33 列 A = " XXXX "; 34 wstringのbの(a.begin()、a.end())。